java - 一个类的 JButton 如何将文本附加到另一类的 JTextArea

标签 java swing oop

我正在尝试将一个类的 JTextAreaaddText() 方法(或 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) {}
    }
}

最佳答案

使用匿名类并删除Button类。如果您已经在主代码中使用了 JButton,我认为不需要从 JButton 扩展类。

<小时/>

解决方案

button.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
        // setText() or append();
    }
});

关于java - 一个类的 JButton 如何将文本附加到另一类的 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34238436/

相关文章:

ruby - 常量与按需实例化的对象——哪个最优?

java - 我不明白 eclipse 的错误

java - if 语句和 for 循环中 ArrayList 的问题

java - 代码在 Eclipse 中有效,但在命令行中无效

java - 如何在第二个屏幕上使用 GUI 启动 jar 文件

Java 获取像素区域并转换为图像 - 如何才能更有效?

java - 未为类型 HelloWorld 定义 JFrame 方法

需要 C# make 方法

python-3.x - PUBLIC属性和方法(作用于公共(public)属性)可以被视为封装吗?

java - 在 Java 中提交 HTML 表单