我有这个代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class pruebaframe extends JFrame
{
public static String elurl="wut";
JPanel jp = new JPanel();
JLabel jl = new JLabel();
JTextField jt = new JTextField(50);
JButton jb = new JButton("Enter");
public pruebaframe()
{
setTitle("Inserte el URL");
setVisible(true);
setSize(600, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
jp.add(jt);
jp.add(jb);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String input = jt.getText();
elurl=input;
jl.setText(input);
}
});
jp.add(jl);
add(jp);
}
public static String getElurl() {
return elurl;
}
public static void setElurl(String elurl) {
pruebaframe.elurl = elurl;
}
}
现在我想在另一个类中使用 elurl 变量,如下所示:
String url1;
pruebaframe t = new pruebaframe();
url1 = t.getElurl();
所以每次我在 Jtextfield url1 上输入内容时都会更改它的值。问题是它不起作用。它不会改变值。我知道这是一个简单的问题,我只是找不到我错在哪里。
最佳答案
执行操作时传递peuebaframe
对象。通过使用另一个类的构造函数或方法。然后您可以获得 jTextField 的更新值。
AnotherClass.java
public class AnotherClass {
private pruebaframe t;
public AnotherClass(pruebaframe t) {
this.t= t;
}
public void print() {
System.out.println("Printing From Another Class: " + t.getElurl());
}
}
并执行以下操作。
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input = jt.getText();
elurl = input;
jl.setText(input);
AnotherClass anotherClass = new AnotherClass(pruebaframe.this);
anotherClass.print();
}
});
输出:
Printing From Another Class: <your updated jTextValue>
关于java - 来自不同文件的基本 JAVA 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726036/