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