Java 一个类的JButton如何将文本附加到另一个类的JTextArea
我正在尝试将一个类的Java 一个类的JButton如何将文本附加到另一个类的JTextArea,java,swing,oop,Java,Swing,Oop,我正在尝试将一个类的JTextArea的addText()方法(或append()方法)添加到另一个类中的JButton 我不想在JButton中创建新对象,也不想将方法设置为静态,我已经在这个论坛上阅读了一些答案,但我无法将其应用到我的代码中,因此请帮助我修复此代码: class Frame extends JFrame { public Frame() { TextArea textarea = new TextArea(); Panel panel
JTextArea
的addText()
方法(或append()
方法)添加到另一个类中的JButton
我不想在JButton
中创建新对象,也不想将方法设置为静态,我已经在这个论坛上阅读了一些答案,但我无法将其应用到我的代码中,因此请帮助我修复此代码:
class Frame extends JFrame {
public Frame() {
TextArea textarea = new TextArea();
Panel panel = new Panel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(dim());
setLayout(new BorderLayout());
add(textarea, BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
setVisible(true);
pack();
setLocationRelativeTo(null);
}
private Dimension dim() {
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension d = kit.getScreenSize();
int width = (int)(d.getWidth() / 2);
int height = (int)(d.getHeight() / 2);
return new Dimension(width, height);
}
}
class TextArea extends JTextArea {
public TextArea() {}
public void addText(String s) {
append(s);
}
}
class Panel extends JPanel {
public Panel() {
Button button = new Button();
button.setText("Start");
button.addActionListener(new Button());
add(button);
}
class Button extends JButton implements ActionListener {
public Button() {}@Override
public void actionPerformed(ActionEvent e) {}
}
}
使用匿名类并删除
按钮
类。如果您已经在主代码中使用了JButton
,我认为没有必要从JButton
扩展类
解决方案
首先,我不扩展
JFrame
,JTextArea
,JPanel
或JButton
。。即使您正在扩展它们,它们的名称在AWT包中也不应该具有等价的名称!这简直令人困惑。您觉得这三个类中有哪些功能需要更改?我仍在学习,我编写这段代码只是为了提问,这样就可以在不更改代码的情况下工作?@user5671675当然可以,但这会增加代码的复杂性。我不认为这是建议。好的,这是非常好的答案!回到基础上来这是最好的主意,我也应该让代码清晰简单:)
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
// setText() or append();
}
});