Java Swing程序显示JButton
我编写Swing代码来显示三个文本字段和标签以及一个按钮, 但按钮显示在框架顶部。我想把它移到三个文本字段的底部。这是我的密码:Java Swing程序显示JButton,java,swing,layout-manager,Java,Swing,Layout Manager,我编写Swing代码来显示三个文本字段和标签以及一个按钮, 但按钮显示在框架顶部。我想把它移到三个文本字段的底部。这是我的密码: import javax.swing.*; import java.awt.*; class textfield { public static void main(String[] args) { JFrame jf; JLabel rcno,name,amount; JTextField rc_
import javax.swing.*;
import java.awt.*;
class textfield
{
public static void main(String[] args)
{
JFrame jf;
JLabel rcno,name,amount;
JTextField rc_no,na_me,am_t;
JButton ok;
JPanel p1,p2;
jf=new JFrame("Billing");
rcno=new JLabel("Recipt No: ");
rc_no=new JTextField(6);
name=new JLabel("Student Name: ");
na_me=new JTextField(20);
amount=new JLabel("Amount: ");
am_t=new JTextField(5);
ok=new JButton("ok");
p1=new JPanel();
//p1.setLayout(new FlowLayout());
p1.setLayout(new GridLayout(3,2,5,5));
p1.add(rcno);
p1.add(rc_no);
p1.add(name);
p1.add(na_me);
p1.add(amount);
p1.add(am_t);
p2=new JPanel();
p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
//ok.setPreferredSize(new Dimension(50,20));
p2.add(ok);
p1.setBounds(110,100,200,100);
//p2.setBounds(220,220,10,10);
jf.add(p1);
jf.add(p2);
jf.setSize(400,500);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
将两个面板添加到一个框架时,它们将堆叠在一起,因此会相互干扰。尝试将另一行添加到p1中的gridlayout中,并将p2添加到p1中。如果您想要更灵活的布局(因为按钮具有文本字段的大小),您可能需要使用GridBagLayout,如前所述。在一个框架中添加两个面板时,它们将堆叠在一起,因此会产生干扰。尝试将另一行添加到p1中的gridlayout中,并将p2添加到p1中。如果您想要更灵活的布局(因为按钮具有文本字段的大小),您可能需要使用GridBagLayout,如前所述。有关示例的一些注意事项:
- 不要使用或;让布局完成工作 < > > <代码> P1 < /代码>,也考虑<代码> GridBagLayout < /C> >,或>代码> GoLoopOuts< /C> >,。
的默认布局是JFrame
;将BorderLayout
添加到p2
南部
- Swing GUI对象应仅在上构造和操作
关于您的示例的一些注释:
- 不要使用或;让布局完成工作 < > > <代码> P1 < /代码>,也考虑<代码> GridBagLayout < /C> >,或>代码> GoLoopOuts< /C> >,。
的默认布局是JFrame
;将BorderLayout
添加到p2
南部
- Swing GUI对象应仅在上构造和操作
import javax.swing.*;
import java.awt.*;
class FormTest {
public static void main(String[] args) {
EventQueue.invokeLater(new FormTest()::display);
}
private void display() {
JFrame jf = new JFrame("Billing");
JButton ok = new JButton("ok");
JLabel rcno = new JLabel("Recipt No:", JLabel.RIGHT);
JTextField rc_no = new JTextField(12);
JLabel name = new JLabel("Student Name:", JLabel.RIGHT);
JTextField na_me = new JTextField(12);
JLabel amount = new JLabel("Amount:", JLabel.RIGHT);
JTextField am_t = new JTextField(12);
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(0, 2, 5, 5));
p1.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
p1.add(rcno);
p1.add(rc_no);
p1.add(name);
p1.add(na_me);
p1.add(amount);
p1.add(am_t);
JPanel p2 = new JPanel();
p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
p2.add(ok);
jf.add(p1);
jf.add(p2, BorderLayout.SOUTH);
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}