在面板中排列项目

时间:2014-10-22 03:07:09

标签: java swing jframe jpanel layout-manager

我正在为我的高中班编写一个小项目,但是我现在遇到了一个问题,因为我正在使用框架。我试图找到最简单,最有效的方法来安排java 7中的面板内容 (注意:这意味着SpringUtilities不是一个选项) < / p>

对于每个项目的安排,我希望它可以选择在顶部输入你的名字,然后在名字框下面的同一行有3个按钮

我到目前为止的代码是

   private static void userInterface(){
        //Declare and assign variables
        final String[] options = {"Lvl 1", "Lvl 2", "Lvl 3"};
        int optionsAmt = options.length;
        //Create the panel used to make the user interface
        JPanel panel = new JPanel(new SpringLayout());

        //Create the name box
        JTextField tf = new JTextField(10);
        JLabel l = new JLabel("Name: ");
        l.setLabelFor(tf);
        panel.add(l);
        panel.add(tf);

        //Create 3 buttons with corresponding values of String options
        for(int a = 0; a < optionsAmt; a++){
            JButton b = new JButton(options[a]);
            panel.add(new JLabel());
            panel.add(b);
        }

        //Layout the panel


    }

    public static void main(String[] args) {

        JFrame f = new JFrame();
        f.pack();
        f.setTitle("Number Game");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);


    }
}

1 个答案:

答案 0 :(得分:4)

&#34;易&#34;是一个相对术语,例如,你可以做类似的事情......

GridLayout

public class TestPane extends JPanel {

    public TestPane() {
        setLayout(new GridLayout(2, 1));

        JPanel fieldPane = new JPanel();
        fieldPane.add(new JTextField(10));
        add(fieldPane);

        JPanel buttonPane = new JPanel();
        buttonPane.add(new JButton("1"));
        buttonPane.add(new JButton("2"));
        buttonPane.add(new JButton("3"));
        add(buttonPane);

    }

}

或类似......

GridBagLayout

public class TestPane extends JPanel {

    public TestPane() {
        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = 3;
        gbc.gridx = 0;
        gbc.gridy = 0;

        add(new JTextField(10), gbc);

        gbc.gridwidth = 1;
        gbc.gridy = 1;

        add(new JButton("1"), gbc);
        gbc.gridx++;
        add(new JButton("2"), gbc);
        gbc.gridx++;
        add(new JButton("3"), gbc);

    }

}

两者都很容易,既可以完成工作,但是你会使用它将在很大程度上取决于你想要实现的目标......

请查看Laying Out Components Within a Container了解详情