Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSplitPane中对齐单选按钮?_Java_Swing_Layout Manager_Jradiobutton_Jsplitpane - Fatal编程技术网

Java 如何在JSplitPane中对齐单选按钮?

Java 如何在JSplitPane中对齐单选按钮?,java,swing,layout-manager,jradiobutton,jsplitpane,Java,Swing,Layout Manager,Jradiobutton,Jsplitpane,我试图在这里对齐我的程序中的单选按钮。有人能帮我吗?我不知道该怎么办。我在这里和其他地方搜索过,似乎找不到一个适用的例子。下面是我相信的代码的相关部分。如果需要更多,我将编辑 final class SplitPanel extends JFrame { private FlowLayout flowLayout = new FlowLayout(); private GridLayout gridLayout = new GridLayout(4, 1); privat

我试图在这里对齐我的程序中的单选按钮。有人能帮我吗?我不知道该怎么办。我在这里和其他地方搜索过,似乎找不到一个适用的例子。下面是我相信的代码的相关部分。如果需要更多,我将编辑

final class SplitPanel extends JFrame {
    private FlowLayout flowLayout = new FlowLayout();
    private GridLayout gridLayout = new GridLayout(4, 1);
    private DiagLayout diagLayout = new DiagLayout();

    private JRadioButton jrbFlowLayout = new JRadioButton("Horizontal");
    private JRadioButton jrbGridLayout = new JRadioButton("Verticle");
    private JRadioButton jrbDiagLayout = new JRadioButton("Diagonal");

    private JButton jbt1 = new JButton("Button 1");
    private JButton jbt2 = new JButton("Button 2");
    private JButton jbt3 = new JButton("Button 3");
    private JButton jbt4 = new JButton("Button 4");

    private JSplitPane jSplitPane;
    private JPanel jPanel1, jPanel2;

    public SplitPanel() {
        this.setTitle("Split Panel with Diagonalization");
        this.setSize(600, 400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        createPanel1();
        createPanel2();

        jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                jPanel1, jPanel2);
        jSplitPane.setOneTouchExpandable(true);
        jSplitPane.setContinuousLayout(true);
        jSplitPane.setDividerLocation(150);

        getContentPane().add(jSplitPane);
    }

    public void createPanel1() {
        jPanel1 = new JPanel();
        jPanel1.setBorder(new TitledBorder("Select a Layout Manger"));
        jPanel1.add(jrbFlowLayout);
        jPanel1.add(jrbGridLayout);
        jPanel1.add(jrbDiagLayout);

        ButtonGroup buttonGroup1 = new ButtonGroup();
        buttonGroup1.add(jrbFlowLayout);
        buttonGroup1.add(jrbGridLayout);
        buttonGroup1.add(jrbDiagLayout);

    }

    public void createPanel2() {
        jPanel2 = new JPanel();
        jPanel2.setLayout(diagLayout);
        jPanel2.add(jbt1);
        jPanel2.add(jbt2);
        jPanel2.add(jbt3);
        jPanel2.add(jbt4);

        jrbFlowLayout.addActionListener (new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jPanel2.setLayout(flowLayout);
                jPanel2.validate();
            }
        });

        jrbGridLayout.addActionListener (new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jPanel2.setLayout(gridLayout);
                jPanel2.validate();
            }
        });

        jrbDiagLayout.addActionListener (new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jPanel2.setLayout(diagLayout);
                jPanel2.validate();
            }
        });

    }

谢谢你的帮助

JPanel的默认布局是FlowLayout。

您可能希望将面板布局设置为GridLayout甚至BoxLayout


JPanel的默认布局是FlowLayout。

您可能希望将面板布局设置为GridLayout甚至BoxLayout


为您的
jPanel1

public void createPanel1() {
    jPanel1 = new JPanel();
    //jPanel1.setLayout(new GridLayout(0, 1);
    jPanel1.setLayout(new BoxLayout(jPanel1, BoxLayout.Y_AXIS));
    jPanel1.setBorder(new TitledBorder("Select a Layout Manger"));
    jPanel1.add(jrbFlowLayout);
    jPanel1.add(jrbGridLayout);
    jPanel1.add(jrbDiagLayout);

    ButtonGroup buttonGroup1 = new ButtonGroup();
    buttonGroup1.add(jrbFlowLayout);
    buttonGroup1.add(jrbGridLayout);
    buttonGroup1.add(jrbDiagLayout);

}
GridLayout

BoxLayout


我几乎建议您使用
GridBagLayout
,但在这种情况下,这可能有些过头了…

请为您的
jPanel1
尝试不同的布局管理器

public void createPanel1() {
    jPanel1 = new JPanel();
    //jPanel1.setLayout(new GridLayout(0, 1);
    jPanel1.setLayout(new BoxLayout(jPanel1, BoxLayout.Y_AXIS));
    jPanel1.setBorder(new TitledBorder("Select a Layout Manger"));
    jPanel1.add(jrbFlowLayout);
    jPanel1.add(jrbGridLayout);
    jPanel1.add(jrbDiagLayout);

    ButtonGroup buttonGroup1 = new ButtonGroup();
    buttonGroup1.add(jrbFlowLayout);
    buttonGroup1.add(jrbGridLayout);
    buttonGroup1.add(jrbDiagLayout);

}
GridLayout

BoxLayout


我几乎建议使用
GridBagLayout
,但在这种情况下,这可能太过分了…

太好了!多谢各位。比我想象的简单多了!好极了!多谢各位。比我想象的简单多了!