如何排列JavaGUI按钮?
我需要安排我的按钮在一个特定的顺序,但无论我做什么修改,它只会改变按钮的大小,而不是位置。 抱歉,如果这是一个简单的问题,这是我的第一个Java类,我很难理解如何安排内容和事件处理如何排列JavaGUI按钮?,java,user-interface,Java,User Interface,我需要安排我的按钮在一个特定的顺序,但无论我做什么修改,它只会改变按钮的大小,而不是位置。 抱歉,如果这是一个简单的问题,这是我的第一个Java类,我很难理解如何安排内容和事件处理 public class SwingCalculator extends JFrame { private JButton jbtReset; private JButton jbtAdd; private JButton jbtSubtract; private double TE
public class SwingCalculator extends JFrame {
private JButton jbtReset;
private JButton jbtAdd;
private JButton jbtSubtract;
private double TEMP;
private double SolveTEMP;
private JTextField jtfResult;
Boolean addBool = false;
Boolean subBool = false;
String display = "";
public SwingCalculator()
{
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(4, 3));
p1.add(jbtReset = new JButton("Reset"));
JPanel p2 = new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jtfResult = new JTextField(10));
jtfResult.setEditable(true);
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(5, 1));
p3.add(jbtAdd = new JButton("+"));
p3.add(jbtSubtract = new JButton("-"));
JPanel p = new JPanel();
p.setLayout(new GridLayout());
p.add(p2);
p.add(p1);
p.add(p3);
add(p);
jbtAdd.addActionListener(new ListenToAdd());
jbtSubtract.addActionListener(new ListenToSubtract());
jbtReset.addActionListener(new ListenToReset());
} //JavaCaluclator()
class ListenToReset implements ActionListener {
public void actionPerformed(ActionEvent e) {
//display = jtfResult.getText();
jtfResult.setText("");
addBool = false;
subBool = false;
TEMP = 0;
SolveTEMP = 0;
}
}
class ListenToAdd implements ActionListener {
public void actionPerformed(ActionEvent e) {
TEMP = Double.parseDouble(jtfResult.getText());
jtfResult.setText("");
addBool = true;
SolveTEMP = SolveTEMP + TEMP;
jtfResult.setText( Double.toString(SolveTEMP));
addBool = false;
subBool = false;
}
}
class ListenToSubtract implements ActionListener {
public void actionPerformed(ActionEvent e) {
TEMP = Double.parseDouble(jtfResult.getText());
jtfResult.setText("");
subBool = true;
SolveTEMP = SolveTEMP - TEMP;
jtfResult.setText( Double.toString(SolveTEMP));
addBool = false;
subBool = false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingCalculator calc = new SwingCalculator();
calc.pack();
calc.setLocationRelativeTo(null);
calc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
calc.setVisible(true);
}
} //JavaCalculator
我的结果是:
预期结果:
您可以通过各种选项使用
GridBagLayout
例如:
您可以对各种选项使用
GridBagLayout
例如:
我已经在下面回答了:注意:如果您刚刚开始学习Java,我强烈建议您学习JavaFX而不是UI的Swing。十多年前,JavaFX取代了Swing。它更强大,更容易使用,而且更常用。虽然Swing还没有死,但除非你有学习它的特殊需要,我的意见是,你最好把时间花在学习当前的技术上。谢谢你的推荐。我之所以学习Swing,是因为这是我目前在大学的课程,但是,我将大胆地开始探索JavaFXgo,我已经回答了下面的问题:如果您刚刚开始学习Java,我强烈建议您学习JavaFX,而不是为您的UI学习Swing。十多年前,JavaFX取代了Swing。它更强大,更容易使用,而且更常用。虽然Swing还没有死,但除非你有学习它的特殊需要,我的意见是,你最好把时间花在学习当前的技术上。谢谢你的推荐。我正在学习Swing,因为这是我目前在大学的课程,但我将大胆地开始研究JavaFX
GridBagLayout grid = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
setLayout(grid);
//add TF
gbc.gridx=1;
gbc.gridy=0;
this.add(new JTextField(10),gbc);
gbc.gridx=0;
gbc.gridy=1;
this.add(new JButton("+"),gbc);
gbc.gridx=1;
this.add(new JButton("-"),gbc);
gbc.gridx=2;
this.add(new JButton("Reset"),gbc);
//also for another display (first TF will be on the same x as - Button)
//(and maybe you want TF to cover the space for all 3 Button +,-,Reset)
//you could add 2 panels one over other (x=0 : y=0,y=1), place TF on P1 and all Buttons on P2