Пожалуйста, помогите мне понять, как это работает. У меня возникают трудности с пониманием того, как, например, JButton
в одном классе может изменить текст в JTextArea
, который находится в другом классе того же пакета. Я сделал простое приложение просто для того, чтобы задать вопрос, мне это нужно для большого школьного проекта, где мне нужно реализовать это для работы с несколькими классами.
Когда я помещаю все в один класс, это работает, но мне нужно это в отдельных классах.
Вот простой код.
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class Button extends JPanel {
private JButton button;
private Panel panel;
public Button() {
button = new JButton("BUTTON");
panel = new Panel();
add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton clicked = (JButton) e.getSource();
String input = clicked.getText();
panel.setTextArea(input);
//System.out.println(input);
}
});
}
}
class Panel extends JPanel {
private JTextArea textArea;
public Panel() {
setLayout(new BorderLayout());
textArea = new JTextArea();
add(textArea, BorderLayout.CENTER);
}
public JTextArea getTextArea() {
return textArea;
}
void setTextArea(String text) {
this.textArea.setText(text);
}
}
public class Java extends JFrame {
private Button dugme;
private JFrame frame;
private Panel panel;
public Java() {
frame = new JFrame();
dugme = new Button();
panel = new Panel();
//super("test");
frame.setLayout(new BorderLayout());
frame.setTitle("test");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(dugme, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
}
public static void main(String[] args) {
Java app = new Java();
}
}
Я хочу, чтобы слушатель действия изменил текст на панели, sys-out работает так, что слушатель слушает кнопку, но я не могу изменить текст в текстовой области.