0

ラジオボタンが選択可能かどうかを決定するフィールドをユーザーが設定できるようにする Swing JRadioButton をオーバーライドする非常に単純なクラスを作成しています。

public class SelectableRadio extends JRadioButton implements MouseListener
private boolean selectable = true;
public SelectableRadio()
{
    super();
    addMouseListener(this);
}

public void setSelectable(boolean select)
{
    selectable = select;
}

@Override
public void mousePressed(MouseEvent e)
{
    if (!selectable)
    {
        e.consume();
    }
}

他のすべてのメソッドが実装されています。これは動作しません。SelectableRadio ボタンが選択不可に設定されている場合、ラジオ ボタンをクリックしても選択されたままになります。

何か助けはありますか?

4

3 に答える 3

2

setSelectable コードを変更し、以下を追加する必要があります。

if (editable) {
    this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    super.enableEvents(Event.MOUSE_DOWN | Event.MOUSE_UP);
} else {
    this.setCursor(CursorFactory.createUnavailableCursor());
    super.disableEvents(Event.MOUSE_DOWN | Event.MOUSE_UP);
}
于 2013-08-06T13:58:25.193 に答える
1

通常はJRadioButtons を aに入れButtonGroupます。

これは、 Oracle チュートリアルの例です。

//Create the radio buttons.
JRadioButton birdButton = new JRadioButton(birdString);
birdButton.setMnemonic(KeyEvent.VK_B);
birdButton.setActionCommand(birdString);
birdButton.setSelected(true);

JRadioButton catButton = new JRadioButton(catString);
catButton.setMnemonic(KeyEvent.VK_C);
catButton.setActionCommand(catString);

JRadioButton dogButton = new JRadioButton(dogString);
dogButton.setMnemonic(KeyEvent.VK_D);
dogButton.setActionCommand(dogString);

JRadioButton rabbitButton = new JRadioButton(rabbitString);
rabbitButton.setMnemonic(KeyEvent.VK_R);
rabbitButton.setActionCommand(rabbitString);

JRadioButton pigButton = new JRadioButton(pigString);
pigButton.setMnemonic(KeyEvent.VK_P);
pigButton.setActionCommand(pigString);

//Group the radio buttons.
ButtonGroup group = new ButtonGroup();
group.add(birdButton);
group.add(catButton);
group.add(dogButton);
group.add(rabbitButton);
group.add(pigButton);

//Register a listener for the radio buttons.
birdButton.addActionListener(this);
catButton.addActionListener(this);
dogButton.addActionListener(this);
rabbitButton.addActionListener(this);
pigButton.addActionListener(this);
...
public void actionPerformed(ActionEvent e) {
    picture.setIcon(new ImageIcon("images/" 
                              + e.getActionCommand() 
                              + ".gif"));
}
于 2013-08-06T14:01:06.690 に答える
0

jRadioButton の enabled プロパティを試しましたか? 選択可能または選択不可にします。

于 2013-08-06T14:07:22.493 に答える