2015-02-27 1 views
0

Как отключить кнопки jtoggle, принадлежащие ButtonGroups при втором нажатии? Какой слушатель я должен использовать для этого? Благодаря!Как отключить jtogglebuttons при втором щелчке, принадлежащем ButtonGroups

JtoggleButton toggleButton;

toggleButton.addActionListener? toggleButton.addChangeListener?

+0

вы к 1. (проще) поиск пользовательских ButtonGroup, так как это реализовано только для JRadioButton, для остальной части ButtonComponents (JButton - JCeckBox - JMenuXxx) опускается, 2. (прямой , проще), чтобы удерживать JToggleButtons в массиве, каждое событие из Item/ActionListener, чтобы зацикливаться внутри, переключаясь с помощью setSelected – mKorbel

ответ

0
public class CustomButtonGroup extends ButtonGroup { 
    @Override 
    public void setSelected(ButtonModel model, boolean selected) { 
    if (selected) { 
     super.setSelected(model, selected); 
    } else { 
     clearSelection(); 
    } 
    } 
} 
+1

Это просто не требуется, 'ButtonGroup' делает это по дизайну – MadProgrammer

+0

Это решило мою проблему. Попробуйте сделать 2 JToggleButtons и поместите их в ButtonGroup. По умолчанию JtoggleButton может быть отключен только при выборе другой кнопки. Я хотел развязать его, нажав на тот же JTogglebutton, и это решило проблему –

0

Как untoggle jtogglebuttons, которая принадлежит ButtonGroups на второй клик? Какой слушатель я должен использовать для этого?

Нет, ButtonGroup позаботится об этом автоматически, вот в чем вопрос. ButtonGroup позволит выбрать только одну кнопку в группе одновременно.

enter image description here

import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.ButtonGroup; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JToggleButton; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test { 

    public static void main(String[] args) { 
     new Test(); 
    } 

    public JavaApplication243() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     public TestPane() { 
      ButtonGroup bg = new ButtonGroup(); 
      JToggleButton btn1 = new JToggleButton("One"); 
      JToggleButton btn2 = new JToggleButton("Two"); 

      bg.add(btn1); 
      bg.add(btn2); 

      add(btn1); 
      add(btn2); 
     } 

    } 

} 
Смежные вопросы