У меня есть JPanel, который выступает в качестве верхней панели для моего приложения, я пытаюсь создать кнопки верхней панели, но я столкнулся с проблемой.
как вы можете видеть, когда я наведу на него курсор, красный не заполняет панель, я хочу, чтобы красный был полным квадратом.и оставьте тот же размер для верхней панели и размера значка.Я ожидаю, что результат будет
, поскольку вы можете видеть, что цвет заполнен в пределах всего бара.Я хотел бы воссоздать это.
Итак, вот код, следующий за Custom JButtonClass для создания эффекта наведения.
public class LynxButton extends JButton {
public LynxButton(){
super.setContentAreaFilled(false);
}
public LynxButton(String text) {
super(text);
super.setContentAreaFilled(false);
}
@Override
protected void paintComponent(Graphics g) {
Color pressedColor = ThemeManager.red_LYNX.darker();
if (getModel().isPressed()) {
g.setColor(pressedColor);
} else if (getModel().isRollover()) {
g.setColor(pressedColor);
} else {
g.setColor(getBackground());
}
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
@Override
public void setContentAreaFilled(boolean b) {
}
}
, а затем мы определяем код, используя
LynxButton exitButton = new LynxButton();
exitButton.setIcon(...);
exitButton.setBorder(null);
Я попытался установить поле, чтобы посмотреть, исправит ли это проблему, но опять не повезло с этим.
exitButton.setMargin(new Insets(0, 0, 0, 0));
Редактировать: Забыл показать определение JPanel
JPanel buttonContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttonContainer
заполняет всю верхнюю панель, подтвердил это, удалив вызов setBackgroundColor.