0

上記のボタンの 1 つだけをデフォルトで選択したいのですが、setSelected(true) が機能していません。以下のプログラムを実行すると、JRadoiButton が選択されていません

import java.util.*;
import java.awt.*;
import java.awt.event.*;
 import javax.swing.*;


public class RadioDemo implements ActionListener {

String buttonName;
JPanel radioPanel=new JPanel();
ButtonGroup group = new ButtonGroup();
Enumeration enl;        
    int result; 
ActionEvent e;
JRadioButton birdButton[];
int i;
Vector<JComponent> list;
Vector<String> listName;


    public RadioDemo(Vector<JComponent> list,Vector<String> listName,Enumeration en,Enumeration enl) 
{
    birdButton=new JRadioButton[list.size()];
        this.enl=enl;
        this.list=list;
        this.listName=listName;

          for(i=0;i<list.size()-1;i++)
        {
            buttonName=(String)enl.nextElement();
                birdButton[i] = new JRadioButton(buttonName);
            birdButton[i].setSelected(false);
                birdButton[i].setActionCommand(buttonName);                                 
            group.add(birdButton[i]);
            birdButton[i].addActionListener(this);                  
            radioPanel.add(birdButton[i]);
        }

            buttonName=(String)enl.nextElement();
                birdButton[i] = new JRadioButton(buttonName);
                birdButton[i].setSelected(true);
            birdButton[i].setActionCommand(buttonName);                                 
            group.add(birdButton[i]);
            birdButton[i].addActionListener(this);                

            radioPanel.add(birdButton[i]);
                      radioPanel.setLayout(new BoxLayout(radioPanel,BoxLayout.Y_AXIS));
                                //birdButton.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
              result = JOptionPane.showConfirmDialog(null, radioPanel, 
                                            "Please choose", JOptionPane.OK_CANCEL_OPTION);
        show();
    }



     /** Listens to the radio buttons. */
        public void actionPerformed(ActionEvent e)
        {     
            this.e=e;
        }

        public void show()
        {
             if (result == JOptionPane.OK_OPTION)
            {       i=0;
                while(!birdButton[i].isSelected())
                {
                    i++;    
                    System.out.println(i);
                }   
                //list.removeElementAt(i);
                //listName.removeElementAt(i);
             System.out.println(i);
             System.out.println(e.getActionCommand());
            }
        }

私もbirdButton[0].setSelected(true);を試します。ループ外

4

1 に答える 1

3

コンストラクターの呼び出し方法を投稿していないため、そこに何かがある可能性があります。コードを少し変更し、mainメソッドを追加しましたが、問題なく動作するようです。それを見てください:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;

public class RadioDemo implements ActionListener {

    String buttonName;
    JPanel radioPanel = new JPanel();
    ButtonGroup group = new ButtonGroup();
    int result;
    JRadioButton birdButton[];
    Vector<String> listName;
    private JRadioButton selectedButton;

    public RadioDemo(Vector<String> listName) {
        birdButton = new JRadioButton[listName.size()];
        this.listName = listName;
        int i = 0;
        for (String buttonName : listName) {
            birdButton[i] = new JRadioButton(buttonName);
            if (i == 0) {
                birdButton[i].setSelected(true);
                selectedButton = birdButton[i];
            }
            birdButton[i].setActionCommand(buttonName);
            group.add(birdButton[i]);
            birdButton[i].addActionListener(this);
            radioPanel.add(birdButton[i]);
            i++;
        }

        radioPanel.setLayout(new BoxLayout(radioPanel, BoxLayout.Y_AXIS));
        // birdButton.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
        result = JOptionPane.showConfirmDialog(null, radioPanel, "Please choose", JOptionPane.OK_CANCEL_OPTION);
        show();
    }

    /** Listens to the radio buttons. */
    @Override
    public void actionPerformed(ActionEvent e) {
        JRadioButton rb = (JRadioButton) e.getSource();
        System.err.println(rb.getText() + " is selected");
        selectedButton = rb;
    }

    public void show() {
        if (result == JOptionPane.OK_OPTION) {
            System.err.println(selectedButton.getText() + " is selected and approved");
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                Vector<String> buttonNames = new Vector<String>();
                buttonNames.add("Show");
                buttonNames.add("Something");
                buttonNames.add("Else");
                buttonNames.add("Beep");
                new RadioDemo(buttonNames);
            }
        });
    }
}
于 2012-07-29T13:06:40.783 に答える