Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个类的JButton如何将文本附加到另一个类的JTextArea_Java_Swing_Oop - Fatal编程技术网

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();
    }
});