События для нескольких кнопок - Java

Узнай цену своей работы

Формулировка задачи:

Пытаюсь потихоньку осваивать работу с событиями. Вот в чем казус: когда нажимаю кнопку "Change Text" изменяется и текст и цвет круга, хотя должен только текст. Подскажите где ошибка, или где я чего-то недопонимаю.
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class SimpleGui3C {
  5. JFrame frame;
  6. JLabel label;
  7. public static void main (String[] args) {
  8. SimpleGui3C simpleGui3C = new SimpleGui3C();
  9. simpleGui3C.go();
  10. }
  11. public void go () {
  12. frame = new JFrame();
  13. SimleGuiPanel simleGuiPanel = new SimleGuiPanel();
  14. JButton buttonColor = new JButton("Color Change");
  15. buttonColor.addActionListener(new ColorListener());
  16. JButton buttonLabel = new JButton("Change Text");
  17. buttonLabel.addActionListener(new LabelListener());
  18. label = new JLabel("HelloWorld");
  19. frame.setSize(500, 500);
  20. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21. frame.setVisible(true);
  22. frame.getContentPane().add(BorderLayout.CENTER, simleGuiPanel);
  23. frame.getContentPane().add(BorderLayout.SOUTH, buttonColor);
  24. frame.getContentPane().add(BorderLayout.WEST, buttonLabel);
  25. frame.getContentPane().add(BorderLayout.EAST, label);
  26. }
  27.  
  28. class ColorListener implements ActionListener {
  29. @Override
  30. public void actionPerformed(ActionEvent e) {
  31. frame.repaint();
  32. }
  33. }
  34. class LabelListener implements ActionListener {
  35. @Override
  36. public void actionPerformed(ActionEvent e) {
  37. label.setText("Changed");
  38. }
  39. }
  40. }
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class SimleGuiPanel extends JPanel {
  4. public void paintComponent(Graphics graphics) {
  5. int red = (int) (Math.random() * 255);
  6. int green = (int) (Math.random() * 255);
  7. int blue = (int) (Math.random() * 255);
  8. Color color = new Color(red, green, blue);
  9. graphics.setColor(color);
  10. graphics.fillOval(70,70, 100,100);
  11. }
  12. }

Решение задачи: «События для нескольких кнопок»

textual
Листинг программы
  1. import javax.swing.*;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5.  
  6. public class SimpleGui3C {
  7.     JFrame frame;
  8.     JLabel label;
  9.     SimleGuiPanel simleGuiPanel;
  10.  
  11.     public static void main(String[] args) {
  12.         SimpleGui3C simpleGui3C = new SimpleGui3C();
  13.         simpleGui3C.go();
  14.     }
  15.  
  16.     public void go() {
  17.         frame = new JFrame();
  18.  
  19.         int red = (int) (Math.random() * 255);
  20.         int green = (int) (Math.random() * 255);
  21.         int blue = (int) (Math.random() * 255);
  22.         simleGuiPanel = new SimleGuiPanel(red, green, blue);
  23.         JButton buttonColor = new JButton("Color Change");
  24.         buttonColor.addActionListener(new ColorListener());
  25.         JButton buttonLabel = new JButton("Change Text");
  26.         buttonLabel.addActionListener(new LabelListener());
  27.         label = new JLabel("HelloWorld");
  28.         frame.setSize(500, 500);
  29.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  30.         frame.getContentPane().add(BorderLayout.CENTER, simleGuiPanel);
  31.         frame.getContentPane().add(BorderLayout.SOUTH, buttonColor);
  32.         frame.getContentPane().add(BorderLayout.WEST, buttonLabel);
  33.         frame.getContentPane().add(BorderLayout.EAST, label);
  34.         frame.setVisible(true);
  35.     }
  36.  
  37.     class ColorListener implements ActionListener {
  38.         @Override
  39.         public void actionPerformed(ActionEvent e) {
  40.             simleGuiPanel.setR((int) (Math.random() * 255));
  41.             simleGuiPanel.setG((int) (Math.random() * 255));
  42.             simleGuiPanel.setB((int) (Math.random() * 255));
  43.             frame.repaint();
  44.         }
  45.     }
  46.  
  47.     class LabelListener implements ActionListener {
  48.         @Override
  49.         public void actionPerformed(ActionEvent e) {
  50.             label.setText("Changed");
  51.         }
  52.     }
  53. }
  54.  
  55. import javax.swing.*;
  56. import java.awt.*;
  57.  
  58. public class SimleGuiPanel extends JPanel {
  59.     int r, g, b;
  60.  
  61.     SimleGuiPanel(int r, int g, int b) {
  62.         this.r = r;
  63.         this.g = g;
  64.         this.b = b;
  65.     }
  66.  
  67.     public void paintComponent(Graphics graphics) {
  68.         Color color = new Color(r, g, b);
  69.         graphics.setColor(color);
  70.         graphics.fillOval(70, 70, 100, 100);
  71.     }
  72.  
  73.     public void setR(int r) {
  74.         this.r = r;
  75.     }
  76.  
  77.     public void setG(int g) {
  78.         this.g = g;
  79.     }
  80.  
  81.     public void setB(int b) {
  82.         this.b = b;
  83.     }
  84. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы