0

からパネル名をキャッチできますActionListenerか?

ここにいくつかのコードがあります:

void models (int paneNum, int tabNum, String eQuery, String str, String title) throws SQLException {

    intoModels[paneNum] = new JPanel();
    intoModels[paneNum].setBackground(c);
    intoModels[paneNum].setLayout(new GridLayout(6, 2));

    ResultSet rs = DataBase.setConnection().executeQuery(eQuery);
    ButtonGroup modelRadioGroup = new ButtonGroup();

    while (rs.next()) {

        JRadioButton radio = new JRadioButton(rs.getString(str));
        radio.addActionListener(new radioButtonActionPerformed());
        modelRadioGroup.add(radio);
        intoModels[paneNum].add(radio);
    }

    intoModels[paneNum].setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), title));
    panelsTab[tabNum].add(intoModels[paneNum]);
}

そしてリスナーコード:

public class radioButtonActionPerformed implements ActionListener {
    public void actionPerformed(ActionEvent e){

        System.out.println("Selected radio: " + e.getActionCommand());
        selectedModel = e.getActionCommand();
    }
}

インターフェース:ここに画像の説明を入力

選択したラジオを取得できますが、どのパネルから登録できません。したがって、パネルを登録し、選択したものを最初と 2 番目のパネルのインデックス 0 と 1 の配列に保存する必要があります。

4

1 に答える 1

1

component.getParent()親を取得する方法を試しましたか。

        public void actionPerformed(ActionEvent e) {
            Object src=e.getSource();
            if(src instanceof JRadioButton){
                Container parent=((JRadioButton)src).getParent();
                if(parent instanceof JPanel){
                    System.out.println(parent.getName());
                }
            }
        }
于 2014-03-23T11:40:36.647 に答える