В зависимости от того, что вы делаете, вам может быть лучше, если вы делаете 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);
Это то, что он выглядит, когда вы наведете или нажмите:
Я думаю, что вы будете Ned изменить его через UIManager – MadProgrammer