代码之家  ›  专栏  ›  技术社区  ›  alex108

如何在同一行中显示两个单选按钮?

  •  2
  • alex108  · 技术社区  · 6 年前

    我是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);
    }
    

    如何在同一行中显示两个单选按钮?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Tripp Kinetics    6 年前

    而不是添加 button1 button2 panel4 ,将其添加到新 JPanel 使用水平布局,并添加新 面板 面板4

    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);
    JPanel radiobuttonpanel = new JPanel();
    BoxLayout radiobuttonpanellayout = new BoxLayout(radiobuttonpanel, BoxLayout.X_AXIS);
    radiobuttonpanel.setLayout(radiobuttonpanellayout);
    radiobuttonpanel.add(button1); radiobuttonpanel.add(button2);
    panel4.add(radiobuttonpanel);