public class Canview extends JFrame {
private String logresult;//这个是需要显示出来的数据变量
.
.
.
JButton button = new JButton("开始");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
logresult="结果显示成功"; //这里给logresult赋值
}
}
TextArea textArea = new TextArea(); //实例化TextArea对象
textArea.setText(logresult);//!!!结果中文本域没有显示出结果!!!
//补充有字数限制,代码大概就这个意思
public class Canview extends JFrame {
private String logresult;
public Canview() {
JButton button = new JButton("开始");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
logresult="输出的结果"
});
}
//文本域
TextArea textArea = new TextArea();
textArea.setBackground(SystemColor.control);
textArea.setText(logresult);
System.out.println(logresult);//null
}
}
1请问你有没有吧你的textArea 添加到JFrame 里面呢?
2 如果代码的逻辑没问题的话,最好是能打个断点调试一下这一行textArea.setText(logresult);,看下数据放进去了吗?
一般呢是先把JTextArea 添加到contentPane然后再把contentPane添加到Jframe里面,
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JTextArea textArea = new JTextArea();
textArea.setBounds(90, 55, 225, 71);
textArea.setText(logresult);//
contentPane.add(textArea);
给你一段代码参考一下
import java.awt.Container;断点出来的是空指针,应该是值没进去
追答logresult 为空吗?
追问TextArea textArea = new TextArea();
textArea.setBackground(SystemColor.control);
textArea.setText(logresult);
System.out.println(logresult);
//输出为null
但是在button监听里面logresult是有效的
我大概明白你的意思了,你这个是变量作用域的问题
你应该把
TextArea textArea
定义成全局变量
public class Canview extends JFrame {
private String logresult;//这个是需要显示出来的数据变量
private TextArea textArea;//全局变量
在显示的时候 实例化textArea
textArea = new TextArea(); //实例化TextArea对象
然后再在
监听方法里面写
public void actionPerformed(ActionEvent e) {
logresult="结果显示成功"; //这里给logresult赋值
//赋值到textArea
textArea.setText(logresult);
}
多谢!出来了!
这个写在button 的监听里会报错,因为textarea不是全局变量
追答加final修饰即可
追问我在settext那里设了断点,是空指针,值没传出来
追答final TextArea textArea = new TextArea();我的提问最后少了个},textArea在jf中
追答你把完整代码贴出来。。