Создать окно с тремя кнопками, используя Swing - Java
Формулировка задачи:
Добрый день!
Помогите, пожалуйста, решить задачу.
Создать окно с тремя кнопками. Каждая кнопка должна окрашивать поверхность окна в один из трех цветов: красный, зеленый, синий. Использовать Swing и не использовать апплеты.
Перед этим я решал точно такую же задачу, используя апплеты. Решил успешно. На всякий случай выкладываю код.
Но теперь нам задали задачу сделать то же самое не используя апплеты. У меня получается вот такой код, но он не работает. Программа выдает пустое окно.
Помогите, пожалуйста, с решением задачи!
Заранее благодарю!
package myhello; import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class MyFrame extends Applet implements ActionListener { int symbol; Button but[]; public void init() { but = new Button[5]; Panel pn = new Panel(new GridLayout(3, 1)); but[3] = new Button("Red"); but[3].addActionListener(this); pn.add(but[3]); but[1] = new Button("Green"); but[1].addActionListener(this); pn.add(but[1]); but[2] = new Button("Blue"); but[2].addActionListener(this); pn.add(but[2]); add(pn); } public void actionPerformed(ActionEvent e) { if (e.getSource() == but[3]) symbol = 3; if (e.getSource() == but[0]) symbol = 0; if (e.getSource() == but[1]) symbol = 1; if (e.getSource() == but[2]) symbol = 2; repaint(); } public void update(Graphics g) { paint(g); } @Override public void paint(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); switch (symbol) { case 0: white(g); break; case 3: red(g); break; case 1: green(g); break; case 2: blue(g); break; } } public void white(Graphics g) { g.setColor(Color.WHITE); g.fillRect(0, 0, getWidth(), getHeight()); } public void red(Graphics g) { g.setColor(Color.RED); g.fillRect(0, 0, getWidth(), getHeight()); } public void green(Graphics g) { g.setColor(Color.GREEN); g.fillRect(0, 0, getWidth(), getHeight()); } public void blue(Graphics g) { g.setColor(Color.BLUE); g.fillRect(0, 0, getWidth(), getHeight()); } }
package myhello; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MyFrame extends JFrame implements ActionListener { int symbol; JButton but[]; public void init() { but = new JButton[5]; JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); but[3] = new JButton("Red"); but[3].addActionListener(this); but[3].setBounds(50, 50, 50, 20); but[1] = new JButton("Green"); but[1].addActionListener(this); but[1].setBounds(130, 50, 50, 20); but[2] = new JButton("Blue"); but[2].addActionListener(this); but[2].setBounds(210, 50, 50, 20); } public void actionPerformed(ActionEvent e) { if (e.getSource() == but[3]) symbol = 3; // вывести надо три цвета, но задано четыре - для того, чтобы изначально при запуске окна выводился белый, а не какой-то другой if (e.getSource() == but[0]) symbol = 0; if (e.getSource() == but[1]) symbol = 1; if (e.getSource() == but[2]) symbol = 2; repaint(); } public void update(Graphics g) { paint(g); } @Override public void paint(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); switch (symbol) { case 0: white(g); // вывести надо три цвета, но задано четыре - для того, чтобы изначально при запуске окна выводился белый, а не какой-то другой break; case 3: red(g); break; case 1: green(g); break; case 2: blue(g); break; } } public void white(Graphics g) { g.setColor(Color.WHITE); // вывести надо три цвета, но задано четыре - для того, чтобы изначально при запуске окна выводился белый, а не какой-то другой g.fillRect(0, 0, getWidth(), getHeight()); } public void red(Graphics g) { g.setColor(Color.RED); g.fillRect(0, 0, getWidth(), getHeight()); } public void green(Graphics g) { g.setColor(Color.GREEN); g.fillRect(0, 0, getWidth(), getHeight()); } public void blue(Graphics g) { g.setColor(Color.BLUE); g.fillRect(0, 0, getWidth(), getHeight()); }; public static void main(String[] args) { // Создаем объект окна JFrame frame = new JFrame("Colors"); //имя заголовка // Устанавливаем первоначальный размер окна frame.setSize(400, 400); // Делаем окно видимым frame.setVisible(true); } }
Решение задачи: «Создать окно с тремя кнопками, используя Swing»
textual
Листинг программы
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MyFrame extends JFrame implements ActionListener { private final JPanel panel = new JPanel(); public MyFrame(String title) { super(title); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); add(panel); JButton b = new JButton("Red"); b.addActionListener(this); b.setBounds(50, 50, 50, 20); panel.add(b); b = new JButton("Green"); b.addActionListener(this); b.setBounds(130, 50, 50, 20); panel.add(b); b = new JButton("Blue"); b.addActionListener(this); b.setBounds(210, 50, 50, 20); panel.add(b); // Устанавливаем первоначальный размер окна setSize(400, 400); // Делаем окно видимым setVisible(true); } public void actionPerformed(ActionEvent e) { String tag = ((JButton) e.getSource()).getText(); switch (tag) { case "Red": panel.setBackground(Color.RED); break; case "Green": panel.setBackground(Color.GREEN); break; case "Blue": panel.setBackground(Color.BLUE); break; } } public static void main(String[] args) { new MyFrame("Colors"); //имя заголовка } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д