GUI类中的JFrame不更新

时间:2016-07-25 10:54:17

标签: swing jframe

我是JAVA的新手,我正在尝试为我的学生编写一个pharmacokinetics计算程序。

该程序读取血浆浓度与时间值的数据库,并计算一些药代动力学参数,并将这些参数输出到多个帧中,以及绘制线性和指数曲线,这些曲线也输出到帧中。

我最初将程序编写为基于控制台的程序,以确保在移至GUI之前一切都按要求运行。现在是GUI构建的艰难步骤。我意识到我的控制台代码会发生很大变化,我期待学习曲线。

我现在正试图通过单独的GUI'输出结果。 class,所以在输出之前在类之间传递帧。我试图从我的GUI'中传递一个帧。上课到我的其他班级,没有成功。

在我学习GUI和JAVA的类结构时,我有两个类。

  1. 一个ProjectChart类,包含所有计算和绘图方法。

  2. 一个ProjectChartGUI类,最终将用于输出所有数据。

  3. ProjectChartGUI目前定义了一些InternalFrames。我一直试图将internalframe传递给ProjectChartOutputInputData()中的一个函数。这构造了一个数据表,由一个单独的函数读取,并将该表输出到一个框架中供用户验证。

    我正在尝试将JInternalFrameProjectChartGUI传递给OutputInputData()

    最初我使用.getFrame()使用OutputInputData (JInternalFrame frame)函数传递了JInternalFrame。

    我还尝试传递ProjectchartGUI对象。 OutputInputData (ProjectChartGUI tProjectChartGUI)。这也行不通。

    在这两种情况下,程序都会运行,所有计算都会成功执行,但是通过ProjectChartGUI打开的框架是空的。

    这是我的主要内容:

    public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException{
    
       ProjectChartGUI tGUI = new ProjectChartGUI();
    
       /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
    
                ActionPharmacokinetics(tGUI);
                tGUI.setVisible(true);
            }
        });
    
       }
    

    以下是ActionPharmacokinetics()函数的片段:

    public static void ActionPharmacokinetics(ProjectChartGUI tGUI){
       DetermineUserInput();
    
        if(CHECK == IVBOLUS_TRUE)
        {
            // Read database to access main information
            Access_IVBOLUS_DatabaseList();
    
            // Read database again to allow user to select desired entry for calculation
            Access_IVBOLUS_Database();
    
            // Output CP and T values to a new window for confirmation
            OutputInputData(tGUI);
    
            //Diplay Linear chart of Data
            Display_IVBOLUS_LinearGraph();
    
            // Display exponential chart of Data
            Display_IVBOLUS_ExponentialGraph();
    
            // Calculate pharmacokinetic parameters
            Calculate_IVBOLUS_PharmacokineticParameters();
    
            // Output pharmacokinetic paramaters
            OutputPharmacokineticParamaters();
    
        }}
    

    这是outputInputData():Cp, lnCp and T是ProjectChart中声明的变量。 Numberofpoints是从数据库中读取的numberofdata点。

    static public void OutputInputData(ProjectChartGUI tGUI){
    
        //create table objects
        String[] ColumnNames = new String[]{"Data Point", "CP"+Units_CP,"ln CP","Time"+Units_T};
        double SetDecimalPoint = 0.0;
        Object[][] Data = new Object[NumberofPoints][4];
        for (int k=0;k<NumberofPoints;k++)
        {
            Data[k][0] = k+1;//index
            Data[k][1] = Cp[k];//plasma
    
            SetDecimalPoint = lnCp[k];//log plasma
            BigDecimal bd = BigDecimal.valueOf(SetDecimalPoint);
            bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); // rounds ln cp to 2 decimal places for output
            Data[k][2] = bd;
    
            Data[k][3] = T[k];//time
        }
    
       //create table
       JTable jtable = new JTable(Data, ColumnNames);
    
       //Create frame
       //JFrame jFrame = new JFrame("Input Data");
       //jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        //add table to frame
        tGUI.getframe().add(new JScrollPane(jtable));
        tGUI.getframe().pack(); //auto size
        tGUI.getframe().setVisible(true);
    
       }
    

    .getframe()返回ProjectChartGUI

    的内部框架
    public javax.swing.JInternalFrame getframe(){
    return jInternalFrame1;
    }
    

    我使用Netbeans GUI构建器来定义一个带有内部框架的框架

    private javax.swing.JInternalFrame jInternalFrame1;
    

    ProjectChartGUI中的所有其他代码都是由Netbeans自动生成的。

    有没有人对我可能出错的地方有任何建议?

0 个答案:

没有答案