gpt4 book ai didi

java - 从不同于 GUI 的类更新 TextField

转载 作者:行者123 更新时间:2023-12-02 01:30:01 27 4
gpt4 key购买 nike

我正在尝试从不同的类更新 GUI。每次我尝试在不同的类上调用该方法时,它都不起作用,但如果我在 GUI 类中调用该方法,它就可以正常工作。

GUI 类:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test7 extends JPanel implements ActionListener {
private JButton jcomp1;
private JButton jcomp2;
private JButton jcomp3;
private JTextField jcomp4;

public Test7() {
//construct components
jcomp1 = new JButton("Button 1");
jcomp2 = new JButton("Button 2");
jcomp3 = new JButton("Button 3");
jcomp4 = new JTextField(5);
jcomp1.addActionListener(this);


//adjust size and set layout
setPreferredSize(new Dimension(723, 455));
setLayout(null);

//add components
add(jcomp1);
add(jcomp2);
add(jcomp3);
add(jcomp4);

//set component bounds (only needed by Absolute Positioning)
jcomp1.setBounds(160, 320, 100, 20);
jcomp2.setBounds(340, 320, 100, 20);
jcomp3.setBounds(490, 315, 140, 20);
jcomp4.setBounds(180, 125, 365, 110);
}


public static void main(String[] args) {
JFrame frame = new JFrame("MyPanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new Test7());
frame.pack();
frame.setVisible(true);
}

public void setTextArea(JTextField jcomp4) {

this.jcomp4 = jcomp4;

}


public JTextField getTextArea() {
return this.jcomp4;
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == jcomp1) {
Class class1 = new Class();
class1.start();
}
}
}

第二类:

public class Class extends Test7{

public void start(){
Test7 form = new Test7();
form.getTextArea().setText("nesto");
}
}

我也尝试过将代码放在同一个线程上,但这似乎也不起作用。

最佳答案

Test7 是 JPanel。它被添加到您的 main 方法中的 JFrame 中。当您调用 Class.start() 时,您将创建新的 Test7。这个新的 JPanel 与之前添加到 JFrame 的 JPanel 无关,因此它甚至不可见。

您的Class类不应扩展或创建新的Test7实例。相反,Test7 实例可以在构造函数中传递给 Class:

Class class1 = new Class(this);
class1.start();

您的类(class)类(class):

public class Class {

private final Test7 test;

public Class(Test7 test) {
super();
this.test = test;
}

public void start() {
test.getTextArea().setText("nesto");

}
}

Andrew的评论也值得思考。

关于java - 从不同于 GUI 的类更新 TextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56233426/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com