Я хочу изменить цвет JButton по:Изменение цвета JButton без изменения формы
JButton button = new JButton();
button.setBackground(Color.decode("#00a5ff"));
Для того, чтобы произошли изменения, я должен добавить:
button.setOpaque(true);
button.setBorderPainted(false);
Однако это удалите кривые вокруг краев и, таким образом, измените форму кнопки. Есть ли способ просто изменить цвет и сохранить другие свойства? Другим примером является изменение цвета (темнее) при нажатии кнопки без изменения ее цвета.
Вот код, который иллюстрирует разницу между этими двумя кнопками:
public static void main(String[] args) {
JFrame frame = new JFrame("frame");
frame.setSize(new Dimension(300, 300));
JButton button1 = new JButton();
JButton button2 = new JButton();
button1.setPreferredSize(new Dimension(100,100));
button2.setPreferredSize(new Dimension(100,100));
button2.setBackground(Color.decode("#00a5ff"));
button2.setBorderPainted(false);
button2.setOpaque(true);
JPanel pane1 = new JPanel(new FlowLayout());
JPanel pane2 = new JPanel(new FlowLayout());
pane1.add(button1);
pane2.add(button2);
frame.add(pane1, BorderLayout.WEST);
frame.add(pane2, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
Благодарности
В большинстве случаев это контролируется представителем делегата, который может или не может предоставить вам средства для его изменения (я уверен, что Windows L & F не работает - даже если вы расширяете реализацию, это все сделанное через частные функции: P) – MadProgrammer