我有一个 Java 程序,BorderLayout
到目前为止运行良好。我想JTextArea
在按下运行按钮后在其下方添加一个以显示输出。
有人可以告诉我一个完成我想做的最好方法的例子吗?我应该先定义一个GridLayout
2X1 的BorderLayout
顶部然后再定义一个JTextArea
底部吗?
我愿意接受建议...
这是我到目前为止所拥有的图像:
在此下方——我想要一个文本区域,一旦我单击运行按钮,它将捕获输出。
我有一个 Java 程序,BorderLayout
到目前为止运行良好。我想JTextArea
在按下运行按钮后在其下方添加一个以显示输出。
有人可以告诉我一个完成我想做的最好方法的例子吗?我应该先定义一个GridLayout
2X1 的BorderLayout
顶部然后再定义一个JTextArea
底部吗?
我愿意接受建议...
这是我到目前为止所拥有的图像:
在此下方——我想要一个文本区域,一旦我单击运行按钮,它将捕获输出。
如果我明白了,当你点击运行按钮时,你想在整个东西下面添加一个 TextArea。
我建议使用 2 个面板。将您已有的所有内容放在一个面板中(该面板将具有borderLayout),然后在其下方放置另一个面板,当您点击“运行”按钮时,您可以在其中以编程方式添加JtextArea。
编辑
类似的东西:
Window
|
|--- Panel (borderLayout)
| | --- (things you already have)
|
|--- Panel 2
| ---- (JTextArea, added later by code)
使用border layout
.
将您现有的 GUI 添加到 a并将panel
其添加到center
offrame
和您TextArea
的south
.border layout
代码片段:
frame.setLayout(new BorderLayout());
frame.add(BorderLayout.CENTER, panel); //panel== your existing GUI
frame.add(BorderLayout.SOUTH, textArea); //new TextArea
正如我在评论中所说......这样的事情怎么样:
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Ironmantis extends JFrame{
JTextArea textArea = new JTextArea();
JPanel upperPanel = new JPanel();
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,upperPanel,new JScrollPane(textArea));
public Ironmantis(){
textArea.setEditable(false);
textArea.append("Operating system: "+System.getProperty("os.name")+"\n");
textArea.append("Operating System version: " +System.getProperty("os.version")+"\n");
textArea.append("Operating system architecture: "+ System.getProperty("os.arch")+"\n");
textArea.append("Java version: "+ System.getProperty("java.version")+"\n");
textArea.append("Java vendor: "+ System.getProperty("java.vendor")+"\n");
textArea.append("Java vendor URL: "+ System.getProperty("java.vendor.url")+"\n");
upperPanel.setPreferredSize(new Dimension(800,400));
upperPanel.setBackground(Color.CYAN);
splitPane.setPreferredSize(new Dimension(800,600));
add(splitPane);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable(){
public void run(){
Ironmantis i = new Ironmantis();
i.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
i.pack();
i.setVisible(true);
}
});
}
}
通过添加 your JPanel
and JTextArea
on JSplitPane
,您JTextArea
将扮演某种控制台的角色,如果我理解正确,这就是您的问题的目标。