我目前正致力于使用GUI输出数据的SJF调度程序。但我无法将数据输出到Jframe面板。帮助将不胜感激。我希望下面提到的代码的输出显示在Jframe上。
public static void WTs() {
int totalWT=0;
for(int x=1;x<=n;x++)
{
WT[x]=BT[x-1]+WT[x-1];
System.out.print("\nWaiting time for Process" + JB[x] + ":\t" + WT[x]
+ " units \t");
totalWT= totalWT+ WT[x];
}
//////////////////////////2nd output/////////////////////////////
public static void Display()
{
for(int x=0;x<n;x++)
{
System.out.println(" JOB \t" +JB[x]);
System.out.println(" BURST TIME\t"+BT[x]);
}
GUI代码
package javaapplication22;
import javax.swing.JOptionPane;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
public class NewClass extends JFrame {
private final JTextArea item1;
public NewClass(){super("SJF PROJECT ");
setLayout(new FlowLayout());
item1=new JTextArea(" ");
add(item1);
setLocationRelativeTo(null);
}
}
主要课程中的GUI代码
NewClass k= new NewClass();
k.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
k.setSize(275, 180);
k.setVisible(true);
k.setExtendedState(JFrame.MAXIMIZED_BOTH);
try {
Thread.sleep(1000);
k.hide();//1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
答案 0 :(得分:0)
您需要做的事情:
NewClass
添加一个方法,该方法将提供对JTextArea item1的访问权。Display
方法中,您需要创建一个字符串,而不是写入System.out
。使用StringBuilder
创建要显示的字符串。要记住的是,您将从非GUI代码中将文本放入JTextArea中,因此请使用SwingUtilities.invokeLater
在EDT上安排最终显示。
希望这有帮助