Создать окно с тремя кнопками, используя 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"); //имя заголовка
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д