【发布时间】:2014-05-24 17:54:11
【问题描述】:
我不明白为什么变量在代码的一部分中起作用,而在另一部分则不行。是同一个变量,用相同的值引用。这是我的代码
// Variables
String patologicos="";
String ginecologicos="";
String valuePanel="";
JTextArea ja;
这里是构造函数
public BaseHistorialPanelNoEditable(int typePanel){
// constructor
ja = new JTextArea();
ja.setPreferredSize(new Dimension(900, 280));
setBackground(Layout.pac_background);
ja.setEditable(false);
this.add(ja);
showInformation(typePanel);
}
显示一些信息的方法
public void showInformation(int value){
// getting data from DB
getPatientData();
switch (value) {
case 1:
valuePanel = patologicos;
break;
case 2:
valuePanel = ginecologicos;
break;
default:
break;
}
// show message
Main.buildDialog(value + " " +valuePanel, "Mensaje informativo", JOptionPane.INFORMATION_MESSAGE);
// set a value to text area
ja.setText(valuePanel);
}
从数据库中获取信息的方法
public void getPatientData(){
Main.readdb.select(
"select * from clinic where no_paciente=" +
Paciente.getPac_no());
if (Main.readdb.getNext()) {
patologicos = Main.readdb.getString("historia_clinic");
ginecologicos = Main.readdb.getString("gineco");
}
这段代码显示一条消息
Main.buildDialog(value + " " +valuePanel, "Mensaje informativo", JOptionPane.INFORMATION_MESSAGE);
使用相同的变量。
为什么当我在一行之后使用相同的变量时,它没有任何值?
ja.setText(valuePanel);
感谢您的宝贵时间。
【问题讨论】:
-
这里的代码太多了。编写一个小程序来说明您正在做什么,以便说明您的问题。然后全部发布。
-
"为什么当我在一行之后使用相同的变量时,它没有任何值?" => 在哪里?
-
让我们从基础开始:您是否在
getPatientData之前调用showInformation?另外,您是否考虑过使用HashMap而不是在代码中乱扔私有字段?有点代码味道 -
好的,抱歉。问题基本上是一个变量的信息没有设置为 JTextArea,但如果我尝试打印或其他东西,它工作得很好,有正确的信息。我把代码用来说明。我有一个名为 valuePanel 的变量,视情况而定,它具有不同的值。问题是当我将它设置为 JTextArea 时没有价值。如果我做 JOptionPane.showMessageDialog(null, valuePanel);显示正确的信息,但如果我执行 ja.setText(valuePanel),则不起作用。不是 Compenent,因为如果我设置一些动态值,它会起作用并发生变化。
-
按照@rcook 所说的去做。你的问题可能很简单,但你必须努力解决它。向我们展示一个带有字符串的程序,您可以在对话框中但不能在文本区域中显示该字符串。