【问题标题】:Reading data from another file in a project从项目中的另一个文件中读取数据
【发布时间】:2013-03-27 20:23:03
【问题描述】:

我陷入了一个我确信很容易克服的问题。主类用于构建gui:

// AlladinLamp.java

package alladinlamp;


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

class AlladinLamp  {

int fnh;
ComboBox runners;

[ ...code ]

AlladinLamp()  {

[ ...code ]

runners = new JComboBox( numberOfRunners );
       runners.setMaximumRowCount(5); 
       runners.addActionListener( new ActionListener() {   
          @Override
          public void actionPerformed( ActionEvent e ) {
             String  runnersNumber = ( String )runners.getSelectedItem();
             fnh = Integer.parseInt( runnersNumber ); 
}

[ ...code ]

public int getFNH() { return fnh; }

[ ...code ]

SwingUtilities.invokeLater( new Runnable()  {
            @Override
            public void run()  {
                AlladinLamp lamp = new AlladinLamp();                 
            }
        });

}

我希望能够从另一个文件中读取 fnh

package alladinlamp; 

Class Processes  {

   int fullNH;
   AlladinLamp lamp;



   Processes()  {
      lamp = new AlladinLamp();
      fullNH = lamp.getFNH();

[ ...code ]

}

[ ...code ]

}

但这并没有发生( fnh = null )。整数是在它创建的同一个文件中读取的。我究竟做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: java swing user-interface file-io


    【解决方案1】:

    我怀疑这里发生的事情是 AlladinLamp 中设置您感兴趣的变量的 actionPerformed() 方法在您的 Processes 类的构造函数之后被调用...这是试图使用那个号码。在这里尝试的简单方法是将 System.out.println 插入到 actionPerformed 中,并在您的 AlladinLamp 和 Processes 构造函数的末尾,然后查看事情发生的顺序。

    正如其他海报提到的那样,它与包裹无关。如果您未指定 public,则默认可见性是包级别的可见性,因此应该没问题。

    忘了提......请记住,Swing 库是一个基于事件的 GUI 库。所以你的 GUI 将首先被构建。稍后才会调用该 actionPerformed 方法……一旦设置了整个 UI 并且您从组合框中选择了某些内容。

    【讨论】:

    • 嗨,我把这些声明放在你要求我的地方。当我将它放在 Process 类的构造函数中时,我没有得到任何输出。就好像它根本没有链接到主类。
    • 不理解这个。您实际上是否在任何地方使用 Process 类?也许发布更多代码会有所帮助。
    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多