Я использую мой вызов класса KButton, который простирается от JButton bui. Я добавляю код, который делает его более красивым, например, изменение шрифта, установка округлой границы, изменение фона с помощью Графика и графика2D. Однако это не работает, когда я хочу добавить код, чтобы он менял цвет при перемещении! мой код находится здесьКак изменить фон расширенного JButton в java, когда мышь над
public class KButton extends JButton implements MouseMotionListener{
private static final long serialVersionUID = 1L;
public KButton(){
setStyle();
}
public KButton(String text){
super(text);
this.setText(text);
setStyle();
addMouseMotionListener(this);
}
public void setStyle(){
setFont(new Font("San Serif",Font.PLAIN,12));
setContentAreaFilled(false);
setBorder(new RoundedBorder(3));
}
@Override
protected void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g.create();
g2.setPaint(new GradientPaint(new Point(0, 0), Color.WHITE, new Point(0, getHeight()), Color.LIGHT_GRAY));
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
super.paintComponent(g);
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent arg0) {
Graphics g=this.getGraphics();
Graphics2D g2 = (Graphics2D)g.create();
g2.setPaint(new GradientPaint(new Point(0, 0), Color.WHITE, new Point(0, getHeight()), Color.BLUE.brighter()));
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
super.setText(getText());
setBorder(new RoundedBorder(3));
super.paintComponent(g);
}
}
и кажется не работает!
Вы можете изучить пользовательскую PLAF. –