2016-04-25 4 views
1

У меня есть приложение, использующее Swing для его пользовательского интерфейса. Я хочу кнопку, которая переключает тип связи, которую использует приложение. Я хочу использовать кнопку Toggle, чтобы определить тип выбранной связи.Отключить эффект Enabled на JToggleButton

Моя проблема заключается в том, что я не хочу, чтобы цвет кнопки менялся после ее нажатия. В настоящее время кнопка выглядит так ... Non-Selected

http://i.stack.imgur.com/Ccdie.png

И тогда при нажатии она выглядит так ...

Выбранный

http://i.stack.imgur.com/Q5yp4.png

Текст изменяющуюся это то, что я хочу, но я бы предпочел, чтобы они имели одинаковый цвет/стиль.

Вот мой код для этого ...

JToggleButton tglbtnCommunicationType = new JToggleButton("AlwaysOn"); 
    tglbtnCommunicationType.setFocusPainted(false); 
    tglbtnCommunicationType.addChangeListener(new ChangeListener() { 
     public void stateChanged(ChangeEvent tgl) { 
      System.out.println("ChangeEvent!"); 
      if(tglbtnCommunicationType.isSelected()){ 
       tglbtnCommunicationType.setText("REST"); 
       tglbtnCommunicationType.setBackground(UIManager.getColor("Button.background")); 
      } 
      else 
      { 
       tglbtnCommunicationType.setText("AlwaysOn"); 
      }; 
     } 
    }); 

Моя мысль в том, что установка фона, когда он выбран стандартный цвет фона будет исправить это, но это не похоже. Есть идеи?

Спасибо!

Вместо этого я переключился на JButton, спасибо за помощь всем!

JButton btnCommunicationType = new JButton("AlwaysOn"); 
    btnCommunicationType.setFocusPainted(false); 
    btnCommunicationType.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      if(btnCommunicationType.getText().equals("AlwaysOn")) 
      { 
       btnCommunicationType.setText("REST"); 
       //TODO: Insert Code for Switching Communication to REST here 
      } 
      else if(btnCommunicationType.getText().equals("REST")){ 
       btnCommunicationType.setText("AlwaysOn"); 
       //TODO: Insert Code for Switching Communication to AlwaysOne here 
      } 
     } 
    }); 
    btnCommunicationType.setBounds(275, 199, 97, 25); 
    thingWorxConnectionPanel.add(btnCommunicationType); 
+0

Возможный дубликат [Отключить стандартный перекрашивание JToggleButton, когда он выбран] (http://stackoverflow.com/questions/ 12227455/disable-standard-repainting-of-jtogglebutton-when-it-is-selected) – Berger

+2

Итак, как пользователь знает, что он выбран, если нет различий в живописи? Пользовательский интерфейс имеет разную картину по какой-то причине. Используйте компонент так, как он предназначен для использования. Например, возьмите редактор, например «Работа». Когда вы перемещаете каретку текста с разными настройками, фон кнопки изменяется, поэтому вы знаете, какие атрибуты являются частью текста. Если у вас нет визуальной подсказки, то зачем использовать кнопку переключения? «Изменение текста - это то, что я хочу, но я бы предпочел, чтобы у них был тот же цвет/стиль». Если вам нужна та же картина, используйте JButton. – camickr

+0

@camickr Пользователь будет знать, что он выбран, потому что текст на кнопке изменится. – mcheli

ответ

1

вы можете сделать это с помощью JButton только вместо JToggleButton,

JButton showButton = new JButton("AlwaysOn"); 
showButton.addActionListener(new ActionListener() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
    String currentText = showButton.getText(); 
    if("AlwaysOn".equals(currentText)){ 
      showButton.setText("REST"); 
    }else{ 
      showButton.setText("AlwaysOn"); 
     } 
    } 
}); 

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

  • Нет связанных вопросов^_^