0

JRadioButton を ButtonGroup に追加してから JPanel に追加する際に問題が発生しました。コードは次のとおりです。

void modelsRadio () throws SQLException {

    JPanel modelsRadioPanel = new JPanel();

    Statement statement = db.setConnection();
    ResultSet rs = statement.executeQuery("SELECT * FROM МОДЕЛИ");
    ButtonGroup modelRadioGroup = new ButtonGroup();

    while (rs.next()) {

        modelsRadioPanel.add(new JRadioButton(rs.getString("НАЗВАНИЕ")));
        //modelRadioGroup.add(new JRadioButton(rs.getString("НАЗВАНИЕ")));
    }

    frame.add(modelsRadioPanel);
}

アイデアは、Oracle SQL テーブルからデータを取得し、ラジオを作成してデータを配置することです。そのため、それらを ButtonGroup に追加できますが、JPanel には追加できません。または、それらをグループに追加せずにJPanelに追加すると、通常は切り替えることができず、それら(ラジオボタン)はチェックボックスのように機能します。

4

3 に答える 3

1

ボタンを作成したら、ButtonGroupと パネルの両方に追加します。ラジオ ボタンの同じインスタンスがパネルとボタン グループの両方に入るようにしてください。コードで、パネル用に 1 つのインスタンスを作成し、グループ用に 1 つのインスタンスを作成します。以下に基本的な例を示します。

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;

public class TestRadio {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame("TestRadio");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JPanel panel = new JPanel();
                ButtonGroup modelRadioGroup = new ButtonGroup();

                for (int i = 0; i < 5; i++) {
                    JRadioButton b1 = new JRadioButton("Radio" + i);

                    modelRadioGroup.add(b1);
                    panel.add(b1);
                }

                f.add(panel);
                f.pack();
                f.setLocationRelativeTo(null);
                f.setVisible(true);
            }
        });
    }
}

詳細については、ButtonGroup コンポーネントの使用方法を参照してください。

于 2014-03-15T18:19:10.503 に答える
0

うーん、私は次のように解決します:

void modelsRadio () throws SQLException {

    JPanel modelsRadioPanel = new JPanel();

    Statement statement = db.setConnection();
    ResultSet rs = statement.executeQuery("SELECT * FROM МОДЕЛИ");
    ButtonGroup modelRadioGroup = new ButtonGroup();

    while (rs.next()) {

       JRadioButton jr = new JRadioButton(rs.getString("НАЗВАНИЕ"));
       //modelRadioGroup.add(new JRadioButton(rs.getString("НАЗВАНИЕ")));
       modelRadioGroup.add(jr);
       modelsRadioPanel.add(jr);   
    }

    frame.add(modelsRadioPanel);
}
于 2014-03-15T18:29:20.857 に答える