2015-05-25 3 views
1
JButton button = new JButton("Green Button"); 
button.setBackground(Color.green); 
button.setBorderPainted(false); 
button.setFocusPainted(false); 

С вышеприведенным кодом стиль стирания кнопки Java удаляется.Java-кнопка, нажимая визуальный стиль

Нажатие кнопки «Вниз» делает синий фон кнопки.

Но как может заставить Java сделать фон кнопки никогда не меняться (в этом случае сохранить зеленый цвет), одновременно нажимая его?

+0

Я думаю, что вы будете Ned изменить его через UIManager – MadProgrammer

ответ

0

Вы могли бы использовать что-то просто ...

JButton btn = new JButton("Hello"); 
btn.setBackground(Color.GREEN); 
btn.setBorderPainted(false); 
btn.setFocusPainted(false); 
btn.setContentAreaFilled(false); 
btn.setOpaque(true); 
btn.setMargin(new Insets(10, 10, 10, 10)); 

Какие краски приятный зеленый кнопку ...

Button

Это не имеет «нажата» состояние рендеринга

0

В зависимости от того, что вы делаете, вам может быть лучше, если вы делаете JPanel как кнопку.

Другой способ, который, как представляется, состоит в том, чтобы сделать button.setEnabled(false);, хотя он исчезает в тексте.

Лучший способом я могу думать (я не уверен, что это лучший) делать:

btnConvert.setContentAreaFilled(false); 
     btnConvert.setBackground(null); 
     btnConvert.setBorderPainted(false); 
     btnConvert.setFocusPainted(false); 
     btnConvert.setOpaque(true); 

Это позволит сделать все прозрачное для текста исключения. Затем вы можете поместить JPanel с зеленым фоном за кнопкой.

Следующий код работает и не изменяется при наведении или нажмите:

JPanel panel = new JPanel(); 
panel.setBackground(Color.green); 
JButton button = new JButton("Button"); 
button.setContentAreaFilled(false); 
button.setBackground(null); 
button.setBorderPainted(false); 
button.setFocusPainted(false); 
button.setOpaque(true); 
panel.setLayout(new BorderLayout(0, 0)); 
panel.add(button); 
getContentPane().add(panel); 

Это то, что он выглядит, когда вы наведете или нажмите: enter image description here

+0

* «// Эти оценки только для того, где я испытывал его.» - Тогда вместо этого используйте 'EmptyBorder'. – MadProgrammer

+0

@MadProgrammer. Я просто использовал кнопку из другого проекта и тестировал и терпел неудачу, пока не получил это для работы. Я удалю эту строку, так как это не имеет значения для этого вопроса. – Forseth11

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