我是Java的初学者。我的任务是创建一个Java窗口,任何用户都可以在其中输入个人数据(姓名、姓氏、性别等),然后单击提交按钮。
为了创建这样的窗口,我添加了
BorderLayout
和四个面板,使用
GridLayout
。我的程序的主要问题是,我无法将两个单选按钮放在同一行中,这使我陷入困境。我试过两者都用
网格布局
和
TableLayout
内部a
JPanel
没有成功地解决这个问题。
这是它的外观截图:
如图所示,“F”单选按钮应置于“M”单选按钮旁边,而不是下方。
这是我的代码:
import java.awt.*;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class Finestra extends JFrame
{
public Finestra ()
{
super("Dati Utente");
this.setBounds(300,50,400,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout());
Panel panel1 = new Panel (new GridLayout(1,1));
Panel panel2 = new Panel (new GridLayout(1,1));
Panel panel3 = new Panel (new GridLayout(5,1));
Panel panel4 = new Panel (new GridLayout(5,1));
panel1.setPreferredSize(new Dimension(100,50));
panel2.setPreferredSize(new Dimension(100,50));
panel3.setPreferredSize(new Dimension (100,200));
panel4.setPreferredSize(new Dimension (260,200));
c.add(panel1, BorderLayout.NORTH);
c.add(panel2, BorderLayout.SOUTH);
c.add(panel3, BorderLayout.WEST);
c.add(panel4, BorderLayout.EAST);
JLabel label1 = new JLabel ("Personal Data");
label1.setHorizontalAlignment(SwingConstants.CENTER);
label1.setFont(new Font ("Open Sans",Font.BOLD,20));
panel1.add(label1);
JLabel label2 = new JLabel ("Name");
label2.setFont(new Font ("Open Sans", Font.PLAIN,14));
label2.setBorder(new EmptyBorder(0,15,0,0));
JLabel label3 = new JLabel ("Last Name");
label3.setFont(new Font ("Open Sans", Font.PLAIN,14));
label3.setBorder(new EmptyBorder(0,15,0,0));
JLabel label4 = new JLabel ("Gender");
label4.setFont(new Font ("Open Sans", Font.PLAIN,14));
label4.setBorder(new EmptyBorder(0,15,0,0));
JLabel label5 = new JLabel ("Hobby");
label5.setFont(new Font ("Open Sans", Font.PLAIN,14));
label5.setBorder(new EmptyBorder(0,15,0,0));
JLabel label6 = new JLabel ("Nationality");
label6.setFont(new Font ("Open Sans", Font.PLAIN,14));
label6.setBorder(new EmptyBorder(0,15,0,0));
panel3.add(label2);
panel3.add(label3);
panel3.add(label4);
panel3.add(label5);
panel3.add(label6);
JTextField f1 = new JTextField();
JTextField f2 = new JTextField();
f1.setPreferredSize(new Dimension(180,30));
f2.setPreferredSize(new Dimension(180,30));
JPanel fp1 = new JPanel (), fp2 = new JPanel ();
fp1.setBorder(new EmptyBorder(15,0,0,0));
fp2.setBorder(new EmptyBorder(15,0,0,0));
fp1.add(f1);
fp2.add(f2);
panel4.add(fp1);
panel4.add(fp2);
JRadioButton button1 = new JRadioButton("M"),button2 = new JRadioButton(("F"));
button1.setHorizontalAlignment(SwingConstants.CENTER); button2.setHorizontalAlignment(SwingConstants.CENTER);
ButtonGroup bgroup1 = new ButtonGroup();
bgroup1.add(button1); bgroup1.add(button2);
panel4.add(button1); panel4.add(button2);
setVisible(true);
}
如何在同一行中显示两个单选按钮?