我如何用两种不同的方法在同一个文本字段上书写?

How do i write on the same textfield from two different methods?

我在 java 中使用 JFrame 创建了一个框架,然后我添加了一个面板 (JPanel),我想在其中创建一个文本字段来编写内容。 问题是我需要用不同的方法在那里写东西。 我怎样才能做到这一点?如果我创建了一个 TextField,我不能从一个不是我创建它的方法修改它,或者不是? 我是初学者所以请不要告诉我做非常复杂的事情。 我希望我已经清楚了

public class Principale {
JLabel label = new JLabel("test");

        private static JFrame createFrame(){

        JFrame sos0 = new JFrame();
        sos0.setVisible(true);
        sos0.setSize(500, 400);
        sos0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        sos0.setTitle("This is a frame");
        sos0.setLocationRelativeTo(null);
        sos0.setLayout( new GridBagLayout() );

        sos0.add(label);

        return sos0;

    } // end of method createFrame

如果这样做,我会收到错误消息,因为无法从静态竞赛中引用对象标签

我认为问题可能在于创建框架每次都创建一个新框架,您最好创建一个 returns 无效的方法来创建框架。就个人而言,我会将 JLabel 声明为 null 并在 create 方法中对其进行初始化。您还可以打印出框架及其内容以控制台查看变量是否有任何问题。

更正: 将您的代码放入 IDE 后,它会通知我错误。您的标签变量需要是静态的才能从静态方法访问。 例如。 static JLabel label = new JLabel("test");

这是您的解决方案示例:

private static JLabel label;

private static void createFrame(){

    JFrame sos0 = new JFrame();
    sos0.setVisible(true);
    sos0.setSize(500, 400);
    sos0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    sos0.setTitle("This is a frame");
    sos0.setLocationRelativeTo(null);
    sos0.setLayout(new GridBagLayout());

    label = new JLabel("test");
    sos0.add(label);

}