我是JAVA的新手,我正在尝试为我的学生编写一个pharmacokinetics
计算程序。
该程序读取血浆浓度与时间值的数据库,并计算一些药代动力学参数,并将这些参数输出到多个帧中,以及绘制线性和指数曲线,这些曲线也输出到帧中。
我最初将程序编写为基于控制台的程序,以确保在移至GUI之前一切都按要求运行。现在是GUI构建的艰难步骤。我意识到我的控制台代码会发生很大变化,我期待学习曲线。
我现在正试图通过单独的GUI'输出结果。 class,所以在输出之前在类之间传递帧。我试图从我的GUI'中传递一个帧。上课到我的其他班级,没有成功。
在我学习GUI和JAVA的类结构时,我有两个类。
一个ProjectChart
类,包含所有计算和绘图方法。
一个ProjectChartGUI
类,最终将用于输出所有数据。
ProjectChartGUI
目前定义了一些InternalFrames
。我一直试图将internalframe
传递给ProjectChart
,OutputInputData()
中的一个函数。这构造了一个数据表,由一个单独的函数读取,并将该表输出到一个框架中供用户验证。
我正在尝试将JInternalFrame
从ProjectChartGUI
传递给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自动生成的。
有没有人对我可能出错的地方有任何建议?