У меня есть приложение, использующее Swing для его пользовательского интерфейса. Я хочу кнопку, которая переключает тип связи, которую использует приложение. Я хочу использовать кнопку Toggle, чтобы определить тип выбранной связи.Отключить эффект Enabled на JToggleButton
Моя проблема заключается в том, что я не хочу, чтобы цвет кнопки менялся после ее нажатия. В настоящее время кнопка выглядит так ... Non-Selected
И тогда при нажатии она выглядит так ...
Выбранный
Текст изменяющуюся это то, что я хочу, но я бы предпочел, чтобы они имели одинаковый цвет/стиль.
Вот мой код для этого ...
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);
Возможный дубликат [Отключить стандартный перекрашивание JToggleButton, когда он выбран] (http://stackoverflow.com/questions/ 12227455/disable-standard-repainting-of-jtogglebutton-when-it-is-selected) – Berger
Итак, как пользователь знает, что он выбран, если нет различий в живописи? Пользовательский интерфейс имеет разную картину по какой-то причине. Используйте компонент так, как он предназначен для использования. Например, возьмите редактор, например «Работа». Когда вы перемещаете каретку текста с разными настройками, фон кнопки изменяется, поэтому вы знаете, какие атрибуты являются частью текста. Если у вас нет визуальной подсказки, то зачем использовать кнопку переключения? «Изменение текста - это то, что я хочу, но я бы предпочел, чтобы у них был тот же цвет/стиль». Если вам нужна та же картина, используйте JButton. – camickr
@camickr Пользователь будет знать, что он выбран, потому что текст на кнопке изменится. – mcheli