Итак, я пытаюсь нарисовать метку, содержащую значок, показывающий круг. Сначала кружок будет заполнен красным, а затем в зависимости от того, какая из 3 кнопок я нажимаю, он либо изменится на зеленый, синий или красный, используя перерисовку.Рисование метки, содержащей значок, показывающий круг
Вот то, что я до сих пор:
public class ColorChanger implements Icon {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame myFrame = new JFrame();
JButton redButton = new JButton("Red");
JButton greenButton = new JButton("Green");
JButton blueButton = new JButton("Blue");
Graphics g;
ColorChanger myCircle = new ColorChanger();
final JLabel myLabel = new JLabel(myCircle);
// myCircle.paintIcon(myFrame, g, 50, 50);
final int FRAME_WIDTH = 300;
final int FRAME_HEIGHT = 200;
myFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
myFrame.setLayout(new FlowLayout());
myFrame.add(redButton);
myFrame.add(greenButton);
myFrame.add(blueButton);
myFrame.add(myLabel);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.pack();
myFrame.setVisible(true);
}
@Override
public int getIconWidth() {
// TODO Auto-generated method stub
return 10;
}
@Override
public int getIconHeight() {
// TODO Auto-generated method stub
return 10;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
// TODO Auto-generated method stub
Graphics2D g2 = (Graphics2D) g;
Ellipse2D.Double circle = new Ellipse2D.Double(50, 50, 10, 10);
g2.setColor(Color.RED);
g2.fill(circle);
}
}
Мой вопрос, я понятия не имею, что пройти для графики г в PaintIcon. Есть ли другой способ сделать это? Я ценю любую помощь в этом.
Значок будет автоматически нарисован 'JLabel', когда он будет обновляться ... – MadProgrammer
[возможно, ярлык] (http://stackoverflow.com/q/14253786/714968) – mKorbel
@MadProgrammer Но это не живопись. Я получаю 3 кнопки, чтобы показать, но теперь круг. – aurora91