Java中容器内的容器

时间:2012-11-08 16:12:42

标签: java swing user-interface containers

我有一个BorderLayout的Java程序,到目前为止工作正常。 我想在下面添加一个JTextArea,以便在点击运行按钮后显示输出。

有人可以向我展示一个实现我想做的最好方法的例子吗? 我应该定义一个GridLayout的2X1,我的BorderLayout位于顶部,然后是我的JTextArea吗?

我愿意接受建议......

这是我到目前为止所拥有的图像: enter image description here

在这下面 - 我希望有一个文本区域,一旦我点击运行按钮就会捕获输出。

3 个答案:

答案 0 :(得分:1)

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

我建议使用2个面板。把你已经拥有的所有内容放在一个Panel中(这个面板将有borderLayout),然后在另一个面板下面放置,当你点击Run按钮时,你可以通过编程方式添加JtextArea。

修改
类似的东西:

Window
|
|--- Panel  (borderLayout)
|      | --- (things you already have)
|
|--- Panel 2
     | ---- (JTextArea, added later by code)

答案 1 :(得分:1)

使用border layout
将您现有的GUI添加到panel,并将其添加到center的{​​{1}}和frame TextArea上的south。< / p>

代码段:

border layout

答案 2 :(得分: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);
            }
        });

    }

}

enter image description here

通过在JPanel添加JTextAreaJSplitPane,您的JTextArea将成为某种控制台的角色,如果我理解正确,那么你的问题。