【问题标题】:When I set a variable to JTextArea it has not value当我将变量设置为 JTextArea 时,它没有值
【发布时间】: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 所说的去做。你的问题可能很简单,但你必须努力解决它。向我们展示一个带有字符串的程序,您可以在对话框中但不能在文本区域中显示该字符串。

标签: java swing jtextarea


【解决方案1】:

不确定,只是一个想法..

当您使用 setEditable(false).. 可能是内部实现不允许设置值..

试试这个:

ja.setEditable(true);
ja.setText(valuePanel);
ja.setEditable(false);

希望这有意义..

【讨论】:

  • 谢谢你的建议,但不是问题,我设置了其他值,例如'case'的值,并且设置正确。
  • setEditable 只影响用户输入。程序的更改不受影响。
  • 是的,setEditable 仅适用于 GUI,但您可以从 Java 代码中设置任何文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多