我有以下界面结构:一个框架,我可以在其中浏览和选择一些文件(在一个类文件中),当我按下一个按钮时,它会读取文件(在一个单独的类文件中)并将它们发送给一些处理(在另一个类文件,第 3 个)。处理本身与这个问题无关。
当我按下前面提到的处理按钮时,会启动一个新窗口(框架)。在那个窗口中,我有一个文本区域,我想在处理过程中显示一些控制台输出,然后显示另一个文本。
绘制第二帧的方法位于第 3 类文件中,即处理类文件中,如下所示:
public static void drawScenario(){
final JPanel mainPanel2 = new JPanel();
JPanel firstLine = new JPanel();
JPanel secLine = new JPanel();
mainPanel2.setLayout(new BoxLayout(mainPanel2, BoxLayout.Y_AXIS));
mainPanel2.setBorder(new EmptyBorder(new Insets(5, 5, 5, 5)));
mainPanel2.add(Box.createVerticalGlue());
firstLine.setLayout(new BoxLayout(firstLine, BoxLayout.X_AXIS));
firstLine.setBorder(new EmptyBorder(new Insets(5, 5, 5, 5)));
firstLine.add(Box.createVerticalGlue());
secLine.setLayout(new BoxLayout(secLine, BoxLayout.X_AXIS));
secLine.setBorder(new EmptyBorder(new Insets(5, 5, 5, 5)));
secLine.add(Box.createVerticalGlue());
JTextArea textArea = new JTextArea("", 10, 40);
textArea.setLineWrap(true);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
textArea.setEditable(false);
JLabel label1 = new JLabel("Processing results:");
firstLine.add(Box.createRigidArea(new Dimension(5,0)));
firstLine.add(label1);
firstLine.add(Box.createRigidArea(new Dimension(5,0)));
secLine.add(textArea);
secLine.add(Box.createRigidArea(new Dimension(5,0)));
mainPanel2.add(firstLine);
mainPanel2.add(Box.createRigidArea(new Dimension(0, 30)));
mainPanel2.add(secLine);
mainPanel2.add(Box.createRigidArea(new Dimension(0, 20)));
JFrame frame = new JFrame("Test results");
frame.setSize(400, 300);
frame.setLocation(50,50);
frame.setVisible( true );
frame.add(mainPanel2);
frame.pack();
}
处理方法( public static void compare(String txt1, String txt2) )也位于同一文件中,在 drawScenario() 方法下方。我的问题是,如何将文本从 compare() 打印到 drawScenario() 方法的 TextArea?
此外,尽管我在 compare() 之前调用了 drawScenario(),但在处理过程中,窗口并没有完全绘制自己(它显示一个黑色的列,并且没有在其中绘制 TextArea)。有没有办法解决这个问题?
谢谢!