Обход создания метода-посредника - Java

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

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

Подскажите пожалуйста как напрямую связать кнопку и метод второй панели? Так же интересует почему между второй панелью и и верхней гранью первой панели появляется отступ и как его убрать?
Листинг программы
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import javax.swing.BorderFactory;
  7. import javax.swing.JButton;
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. public class Main2 {
  11. public static void main(String[] args) {
  12. Frame f = new Frame();
  13. }
  14. }
  15. class Frame extends JFrame {
  16. private JButton b;
  17. private Panel p;
  18. private boolean panelState = false;
  19. public Frame() {
  20. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21. this.setLocationRelativeTo(null);
  22. this.p = new Panel();
  23. this.getContentPane().add(this.p, BorderLayout.CENTER);
  24. this.b = new JButton("button");
  25. this.getContentPane().add(this.b, BorderLayout.NORTH);
  26. this.b.addActionListener(new ActionListener() {
  27. @Override
  28. public void actionPerformed(ActionEvent e) {
  29. if (Frame.this.panelState == false) {
  30. Frame.this.panelState = true;
  31. Frame.this.p.setColor(Color.black);//изменить это
  32. System.out.println("black");
  33. } else {
  34. Frame.this.panelState = false;
  35. Frame.this.p.setColor(Color.blue);//и это
  36. System.out.println("blue");
  37. }
  38. }
  39. });
  40. this.pack();
  41. this.setVisible(true);
  42. }
  43. }
  44. class Panel extends JPanel {
  45. private Panel2 p2;
  46. public Panel() {
  47. this.setPreferredSize(new Dimension(300, 200));
  48. this.setBorder(BorderFactory.createLineBorder(Color.red));
  49. this.p2 = new Panel2();
  50. this.add(this.p2);
  51. }
  52. public void setColor(Color c) {//Убрать этого посредника
  53. p2.setColor(c);
  54. }
  55. }
  56. class Panel2 extends JPanel {
  57. public Panel2() {
  58. this.setPreferredSize(new Dimension(200, 100));
  59. this.setBackground(Color.blue);
  60. }
  61. public void setColor(Color c) {
  62. this.setBackground(c);
  63. }
  64. }

Решение задачи: «Обход создания метода-посредника»

textual
Листинг программы
  1. public Panel() {
  2.     super(new FlowLayout(FlowLayout.CENTER, 5, 0), true);

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


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

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

8   голосов , оценка 3.875 из 5

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

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

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