java - 如何在 JFrame 中正确实现 JButton?它只是占据了整个屏幕
问题描述
我是 GUI 制作的新手,我真的不知道如何正确实现 JButton。所以我已经把它放进去了,但我似乎无法让它不占据整个窗口。我只想要窗口底部的一个小按钮。
我试过 setbounds 和 setsize 但似乎都没有工作。
import java.awt.*;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
public class Menu extends JFrame implements ActionListener{
private Container win;
private Color color;
private ImageIcon exportButton = new ImageIcon("export.png");
public Menu(){
super("MLA Formatter");
JButton b1;
win = getContentPane();
win.setBackground(Color.white);
b1 = new JButton("Export File");
b1.setVerticalTextPosition(AbstractButton.CENTER);
b1.setHorizontalTextPosition(AbstractButton.CENTER);
// b1.setBounds(500,900,100,100);
b1.setSize(100,100);
add(b1);
}
public static void main(String[] args){
Menu window = new Menu();
window.setBounds(200, 200, 1000, 1000);
window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
window.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
解决方案
我将尝试通过下面的示例演示您拥有的选项(在这里,我采用了您的代码并将其最小化以证明我的观点。)。
在这里,我提到了 4 个选项。您可以取消注释每个选项下的代码(一次一个)并运行它并查看自己。
import javax.swing.*;
import java.awt.*;
public class Menu extends JFrame {
public Menu() {
super("MLA Formatter");
JButton b1 = new JButton("Export File");
b1.setVerticalTextPosition(AbstractButton.CENTER);
b1.setHorizontalTextPosition(AbstractButton.CENTER);
//Layout 1
//Default layout of JFrame content pane is BorderLayout.
//When we do not specify a constraint (like BorderLayout.SOUTH), default is BorderLayout.CENTER
//So, this is equivalent to add(b1, BorderLayout.CENTER);
//add(b1);
//Layout 2
//add(b1, BorderLayout.SOUTH);
//Layout 3
//setLayout(new FlowLayout());
//add(b1);
//Layout 4
setLayout(new GridBagLayout());
add(b1, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.SOUTH,
GridBagConstraints.NONE, new Insets(10, 10, 10, 10), 0, 0));
}
public static void main(String[] args) {
Menu window = new Menu();
window.setBounds(200, 200, 1000, 800);
window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
推荐阅读
- r - 将 ggplot2 对象添加到绘图列表中
- google-apps-script - 对于 Google 表格中的每个循环?以 VBA 为例
- ios - 如何使用 poptoviewcontroller 返回到以前的控制器
- php - 检测到 Symfony4 错误 php 版本的 Laravel\Vagrant Homestead
- java - Spring JPA 用 Oher 列连接两个表
- javascript - 错误“0: 'Open' is not defined”和“SCRIPT1005: SCRIPT1005: Expected '('” 如何修复这些错误?
- r - 根据指定列中的最小值从数据框中获取 X 行;并在平局中随机选择
- octave - Octave 是否支持 Live 脚本或其格式 (.mlx) 文件?
- ruby - 当我不知道使用哪个程序安装 Ruby 时如何升级 Ruby 版本?
- c++ - std::cin 从控制台获取两种不同的变量类型并“存储”第二种类型供以后使用?