Обход создания метода-посредника - Java
Формулировка задачи:
Подскажите пожалуйста как напрямую связать кнопку и метод второй панели?
Так же интересует почему между второй панелью и и верхней гранью первой панели появляется отступ и как его убрать?
Листинг программы
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.BorderFactory;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class Main2 {
- public static void main(String[] args) {
- Frame f = new Frame();
- }
- }
- class Frame extends JFrame {
- private JButton b;
- private Panel p;
- private boolean panelState = false;
- public Frame() {
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setLocationRelativeTo(null);
- this.p = new Panel();
- this.getContentPane().add(this.p, BorderLayout.CENTER);
- this.b = new JButton("button");
- this.getContentPane().add(this.b, BorderLayout.NORTH);
- this.b.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (Frame.this.panelState == false) {
- Frame.this.panelState = true;
- Frame.this.p.setColor(Color.black);//изменить это
- System.out.println("black");
- } else {
- Frame.this.panelState = false;
- Frame.this.p.setColor(Color.blue);//и это
- System.out.println("blue");
- }
- }
- });
- this.pack();
- this.setVisible(true);
- }
- }
- class Panel extends JPanel {
- private Panel2 p2;
- public Panel() {
- this.setPreferredSize(new Dimension(300, 200));
- this.setBorder(BorderFactory.createLineBorder(Color.red));
- this.p2 = new Panel2();
- this.add(this.p2);
- }
- public void setColor(Color c) {//Убрать этого посредника
- p2.setColor(c);
- }
- }
- class Panel2 extends JPanel {
- public Panel2() {
- this.setPreferredSize(new Dimension(200, 100));
- this.setBackground(Color.blue);
- }
- public void setColor(Color c) {
- this.setBackground(c);
- }
- }
Решение задачи: «Обход создания метода-посредника»
textual
Листинг программы
- public Panel() {
- super(new FlowLayout(FlowLayout.CENTER, 5, 0), true);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д