gpt4 book ai didi

java - 如何在java中的JFrame中排列按钮?

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:45 26 4
gpt4 key购买 nike

我只是编程初学者。我想在 NetBeans IDE 中编写一个计算器(只是它的图形)。但我在按照我想要的方式放置按钮时遇到了一些问题。两个按钮具有不同的大小(0 & = 按钮)。但我不知道如何放置它们!

这是我的代码:

public class Calculator extends JFrame implements ActionListener {
JPanel[] row = new JPanel[7];
JButton[] button = new JButton[28];
String[] buttonString = {"MC", "MR", "MS", "M+", "M-",
"CL", "CE", "C", "+/-", "√",
"7", "8", "9", "/", "%",
"4", "5", "6", "*", "1/x",
"1", "2", "3", "-",
".", "+", "0", "="};

Dimension displayDimension = new Dimension( 275, 60);
Dimension regularDimension = new Dimension( 55 , 40);
Dimension zeroButDimension = new Dimension( 110 , 40);
Dimension equalButDimension = new Dimension( 55 , 80);

JTextArea display = new JTextArea(1,20);
Font font = new Font("Times new Roman", Font.BOLD, 14);

Calculator() {
super("CALC");
setDesign();
setSize(300, 350);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridLayout grid = new GridLayout(7,5);
setLayout(grid);
FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
for(int i = 0; i < 7; i++)
row[i] = new JPanel();
row[0].setLayout(f1);
for(int i = 1; i < 7; i++)
row[i].setLayout(f2);
for(int i = 0; i < 28; i++) {
button[i] = new JButton();
button[i].setText(buttonString[i]);
button[i].setFont(font);
button[i].addActionListener(this);
}
display.setFont(font);
display.setEditable(false);
display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
display.setPreferredSize(displayDimension);
for(int i = 0; i < 24; i++)
button[i].setPreferredSize(regularDimension);
button[26].setPreferredSize(equalButDimension);
button[24].setPreferredSize(regularDimension);
button[25].setPreferredSize(regularDimension);
button[27].setPreferredSize(zeroButDimension);

row[0].add(display);
add(row[0]);

for(int i = 0; i < 5; i++)
row[1].add(button[i]);
add(row[1]);

for(int i = 5; i < 10; i++)
row[2].add(button[i]);
add(row[2]);

for(int i = 10; i < 15; i++)
row[3].add(button[i]);
add(row[3]);

for(int i = 15; i < 20; i++)
row[4].add(button[i]);
add(row[4]);

for(int i = 20; i < 24; i++)
row[5].add(button[i]);
row[5].add(button[26]);
add(row[5]);

row[6].add(button[27]);
row[6].add(button[24]);
row[6].add(button[25]);
add(row[6]);

setVisible(true);
}

public final void setDesign() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e) {
}
}

public void actionPerformed(ActionEvent ae) {

}

public static void main(String[] arguments) {
Calculator c = new Calculator();
}
}

我应该怎样做才能正确排列它们?

最佳答案

我相信您正在寻找的是 gridbaglayout。它允许您基于网格放置元素(按钮、文本字段等)。这是它的文档:

http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

我还建议查看其他一些布局管理器,因为有一些非常有趣且有用的布局管理器。有关 GUI 布局的一般介绍,请参阅此处的文档:

http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

上面的链接包含您开始使用所需的所有信息。

关于java - 如何在java中的JFrame中排列按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com