3

我有一个 Java 程序,BorderLayout到目前为止运行良好。我想JTextArea在按下运行按钮后在其下方添加一个以显示输出。

有人可以告诉我一个完成我想做的最好方法的例子吗?我应该先定义一个GridLayout2X1 的BorderLayout顶部然后再定义一个JTextArea底部吗?

我愿意接受建议...

这是我到目前为止所拥有的图像: 在此处输入图像描述

在此下方——我想要一个文本区域,一旦我单击运行按钮,它将捕获输出。

4

3 回答 3

1

如果我明白了,当你点击运行按钮时,你想在整个东西下面添加一个 TextArea。

我建议使用 2 个面板。将您已有的所有内容放在一个面板中(该面板将具有borderLayout),然后在其下方放置另一个面板,当您点击“运行”按钮时,您可以在其中以编程方式添加JtextArea。

编辑
类似的东西:

Window
|
|--- Panel  (borderLayout)
|      | --- (things you already have)
|
|--- Panel 2
     | ---- (JTextArea, added later by code)
于 2012-11-08T16:47:29.920 回答
1

使用border layout.
将您现有的 GUI 添加到 a并将panel其添加到centerofframe和您TextAreasouth.border layout

代码片段:

frame.setLayout(new BorderLayout());
frame.add(BorderLayout.CENTER, panel);  //panel== your existing GUI
frame.add(BorderLayout.SOUTH, textArea);  //new TextArea
于 2012-11-08T16:48:39.180 回答
1

正如我在评论中所说......这样的事情怎么样:

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 JPaneland JTextAreaon JSplitPane,您JTextArea将扮演某种控制台的角色,如果我理解正确,这就是您的问题的目标。

于 2012-11-08T17:01:53.203 回答