Создать окно с тремя кнопками, используя Swing - Java

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

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

Добрый день! Помогите, пожалуйста, решить задачу. Создать окно с тремя кнопками. Каждая кнопка должна окрашивать поверхность окна в один из трех цветов: красный, зеленый, синий. Использовать Swing и не использовать апплеты. Перед этим я решал точно такую же задачу, используя апплеты. Решил успешно. На всякий случай выкладываю код.
Листинг программы
  1. package myhello;
  2. import java.applet.Applet;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. public class MyFrame extends Applet implements ActionListener {
  6. int symbol;
  7. Button but[];
  8. public void init() {
  9. but = new Button[5];
  10. Panel pn = new Panel(new GridLayout(3, 1));
  11. but[3] = new Button("Red");
  12. but[3].addActionListener(this);
  13. pn.add(but[3]);
  14. but[1] = new Button("Green");
  15. but[1].addActionListener(this);
  16. pn.add(but[1]);
  17. but[2] = new Button("Blue");
  18. but[2].addActionListener(this);
  19. pn.add(but[2]);
  20. add(pn);
  21. }
  22. public void actionPerformed(ActionEvent e) {
  23. if (e.getSource() == but[3]) symbol = 3;
  24. if (e.getSource() == but[0]) symbol = 0;
  25. if (e.getSource() == but[1]) symbol = 1;
  26. if (e.getSource() == but[2]) symbol = 2;
  27. repaint();
  28. }
  29. public void update(Graphics g) {
  30. paint(g);
  31. }
  32. @Override
  33. public void paint(Graphics g) {
  34. g.clearRect(0, 0, getWidth(), getHeight());
  35. switch (symbol) {
  36. case 0:
  37. white(g);
  38. break;
  39. case 3:
  40. red(g);
  41. break;
  42. case 1:
  43. green(g);
  44. break;
  45. case 2:
  46. blue(g);
  47. break;
  48. }
  49. }
  50. public void white(Graphics g) {
  51. g.setColor(Color.WHITE);
  52. g.fillRect(0, 0, getWidth(), getHeight());
  53. }
  54. public void red(Graphics g) {
  55. g.setColor(Color.RED);
  56. g.fillRect(0, 0, getWidth(), getHeight());
  57. }
  58. public void green(Graphics g) {
  59. g.setColor(Color.GREEN);
  60. g.fillRect(0, 0, getWidth(), getHeight());
  61. }
  62. public void blue(Graphics g) {
  63. g.setColor(Color.BLUE);
  64. g.fillRect(0, 0, getWidth(), getHeight());
  65. }
  66. }
Но теперь нам задали задачу сделать то же самое не используя апплеты. У меня получается вот такой код, но он не работает. Программа выдает пустое окно.
Листинг программы
  1. package myhello;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. public class MyFrame extends JFrame implements ActionListener {
  6. int symbol;
  7. JButton but[];
  8. public void init() {
  9. but = new JButton[5];
  10. JPanel panel = new JPanel();
  11. panel.setLayout(new FlowLayout());
  12. but[3] = new JButton("Red");
  13. but[3].addActionListener(this);
  14. but[3].setBounds(50, 50, 50, 20);
  15. but[1] = new JButton("Green");
  16. but[1].addActionListener(this);
  17. but[1].setBounds(130, 50, 50, 20);
  18. but[2] = new JButton("Blue");
  19. but[2].addActionListener(this);
  20. but[2].setBounds(210, 50, 50, 20);
  21. }
  22. public void actionPerformed(ActionEvent e) {
  23. if (e.getSource() == but[3]) symbol = 3; // вывести надо три цвета, но задано четыре - для того, чтобы изначально при запуске окна выводился белый, а не какой-то другой
  24. if (e.getSource() == but[0]) symbol = 0;
  25. if (e.getSource() == but[1]) symbol = 1;
  26. if (e.getSource() == but[2]) symbol = 2;
  27. repaint();
  28. }
  29. public void update(Graphics g) {
  30. paint(g);
  31. }
  32. @Override
  33. public void paint(Graphics g) {
  34. g.clearRect(0, 0, getWidth(), getHeight());
  35. switch (symbol) {
  36. case 0:
  37. white(g); // вывести надо три цвета, но задано четыре - для того, чтобы изначально при запуске окна выводился белый, а не какой-то другой
  38. break;
  39. case 3:
  40. red(g);
  41. break;
  42. case 1:
  43. green(g);
  44. break;
  45. case 2:
  46. blue(g);
  47. break;
  48. }
  49. }
  50. public void white(Graphics g) {
  51. g.setColor(Color.WHITE); // вывести надо три цвета, но задано четыре - для того, чтобы изначально при запуске окна выводился белый, а не какой-то другой
  52. g.fillRect(0, 0, getWidth(), getHeight());
  53. }
  54. public void red(Graphics g) {
  55. g.setColor(Color.RED);
  56. g.fillRect(0, 0, getWidth(), getHeight());
  57. }
  58. public void green(Graphics g) {
  59. g.setColor(Color.GREEN);
  60. g.fillRect(0, 0, getWidth(), getHeight());
  61. }
  62. public void blue(Graphics g) {
  63. g.setColor(Color.BLUE);
  64. g.fillRect(0, 0, getWidth(), getHeight());
  65. };
  66.  
  67. public static void main(String[] args) {
  68. // Создаем объект окна
  69. JFrame frame = new JFrame("Colors"); //имя заголовка
  70. // Устанавливаем первоначальный размер окна
  71. frame.setSize(400, 400);
  72. // Делаем окно видимым
  73. frame.setVisible(true);
  74. }
  75. }
Помогите, пожалуйста, с решением задачи! Заранее благодарю!

Решение задачи: «Создать окно с тремя кнопками, используя Swing»

textual
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5.  
  6. public class MyFrame extends JFrame implements ActionListener {
  7.  
  8.     private final JPanel panel = new JPanel();
  9.  
  10.     public MyFrame(String title) {
  11.         super(title);
  12.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  13.         add(panel);
  14.  
  15.         JButton b = new JButton("Red");
  16.         b.addActionListener(this);
  17.         b.setBounds(50, 50, 50, 20);
  18.         panel.add(b);
  19.  
  20.         b = new JButton("Green");
  21.         b.addActionListener(this);
  22.         b.setBounds(130, 50, 50, 20);
  23.         panel.add(b);
  24.  
  25.         b = new JButton("Blue");
  26.         b.addActionListener(this);
  27.         b.setBounds(210, 50, 50, 20);
  28.         panel.add(b);
  29.  
  30.         // Устанавливаем первоначальный размер окна
  31.         setSize(400, 400);
  32.         // Делаем окно видимым
  33.         setVisible(true);
  34.  
  35.     }
  36.  
  37.     public void actionPerformed(ActionEvent e) {
  38.         String tag = ((JButton) e.getSource()).getText();
  39.         switch (tag) {
  40.             case "Red":
  41.                 panel.setBackground(Color.RED);
  42.                 break;
  43.             case "Green":
  44.                 panel.setBackground(Color.GREEN);
  45.                 break;
  46.             case "Blue":
  47.                 panel.setBackground(Color.BLUE);
  48.                 break;
  49.         }
  50.     }
  51.  
  52.     public static void main(String[] args) {
  53.         new MyFrame("Colors"); //имя заголовка
  54.     }
  55. }

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


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

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

11   голосов , оценка 4.364 из 5

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

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

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