我的代码编译时没有错误或警告,但按钮在默认位置(网格窗口的中心)相互重叠。我怎样才能克服这个问题?我真的想避免使用 GridBagLayout,因为我发现它有点太烦人和复杂。
我已经阅读了很多关于这个问题的内容(从这里和其他平台上的帖子到 sun 提供的文档),但除了使用“神秘的”GridBagLayout 方法之外,似乎没有什么真正有效的。
任何人都可以帮助我或为我指出一个更好、更富有成果的方向吗?
我提供了我在下面编写的代码。
提前致谢。 //计算器的版本2(使用网格) 导入java.awt.GridLayout; 导入 javax.swing.JButton; 导入 javax.swing.JFrame; //导入javax.swing.JTextField;
//buttons definition and declaration, layout class definition
public class calculatorV2 extends JFrame {
private static final long serialVersionUID = 1L;
GridLayout calcGui;
//JTextField display;
public calculatorV2(){
calcGui = new GridLayout(4,4,2,2);
setSize(400,400);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack();
setVisible(true);
setTitle("Calculator");
setLocationRelativeTo(null);
//display = new JTextField();
//display.setHorizontalAlignment(JTextField.RIGHT);
add(new JButton("0"));
add(new JButton("1"));
add(new JButton("2"));
add(new JButton("3"));
add(new JButton("4"));
add(new JButton("5"));
add(new JButton("6"));
add(new JButton("7"));
add(new JButton("8"));
add(new JButton("9"));
add(new JButton("+"));
add(new JButton("-"));
add(new JButton("*"));
add(new JButton("/"));
add(new JButton("="));
add(new JButton("C"));
}
//run grid
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new calculatorV2();
}
});
}}
最佳答案
您尚未在 JFrame
上设置布局,您仅实例化了一个。
在添加组件之前,您需要调用
setLayout(calcGui);
关于java - 如何在 GridLayout (java swing) 中定义/排列按钮位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35590025/