2

正確かつ簡潔に言うと、コンポーネントを1つずつフレームに追加するのではなく、コンポーネントのグループ(チェックボックス、ラジオボタンなど)でフレームコンテナをレイアウトすることは可能ですか? したがって、それらをフレームに配置する方がはるかに簡単です。

private void initializaUI(){
    setSize(700, 600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Panel container to wrap checkboxes and radio buttons
    JPanel panel = new JPanel(null);
    JPanel checkBoxPanel = new JPanel(new BoxLayout(panel, defaultCloseOperation, null));
    JPanel radioPanel_1 = new JPanel(new GridLayout());
    JPanel radioPanel_2 = new JPanel(new GridLayout());

    //Text field to display order
    JTextField orderField = new JTextField(20);
    orderField.setBounds(100, 100, 100, 20);

    //Button to process place the order
    JButton button = new JButton("Process Selection");
    button.setBounds(300, 100, 100, 40);

    //toppings check boxes
    checkBoxPanel.setVisible(true);
    checkBoxPanel.setBounds(100, 200, 100, 50);
    String Topping[] = {"Tomato", "Green Pepper", "Black Olives", "Mushrooms", "Extra Cheese", "Pepperoni", "Sausage"};
    checkBoxPanel.add(new JCheckBox("Tomato"));
    checkBoxPanel.add(new JCheckBox(Topping[1]));
    checkBoxPanel.add(new JCheckBox(Topping[2]));
    checkBoxPanel.add(new JCheckBox(Topping[3]));
    checkBoxPanel.add(new JCheckBox(Topping[4]));
    checkBoxPanel.add(new JCheckBox(Topping[5]));
    checkBoxPanel.add(new JCheckBox(Topping[6]));       
    //sizes radio buttons
    String size[] = {"Small:$6.50", "Medium:$8.50", "Large:$10.00"};
    JRadioButton radio = new JRadioButton(size[0]);
    radio.setBounds(100, 50, 100, 20);
    //  
    panel.add(checkBoxPanel);
    //
    setContentPane(panel);

これは、ユーザーの入力に基づいて何らかのアクションを実行するコードです。明確で読みやすいものにするのを手伝ってください。これはエラーです:「フィールド Component.x が表示されません」

4

1 に答える 1

3

はい、それが a のJPanel目的です。JFrameこれは、内部レイアウト マネージャーを持ち、 内(または別の 内)の任意の場所に配置できる空のコンテナーですJPanel。したがって、例を挙げると、次のようになります。

JPanel checkBoxPanel = new JPanel(new GridLayout(..));
JPanel fieldsPanel = new JPanel(new BoxLayout(..));

checkBoxPanel.add(new JCheckBox(..));

fieldsPanel.add(new JTextField(..));

frame.setLayout(new BorderLayout());
frame.add(checkBoxPanel, BorderLayout.NORTH);
frame.add(..)
于 2012-11-15T15:19:38.257 に答える