如何制作不同尺寸的摆动组件

时间:2012-06-06 00:41:09

标签: java swing user-interface layout layout-manager

如何在java中为Swing组件制作特定大小? gui应该看起来像这样......

+++++++++++++++++
+  TextField    +
+++++++++++++++++
+               +
+  TextPane     +
+               +
+++++++++++++++++
+Button +Button +
+++++++++++++++++

我已尝试BorderLayoutGridLayout,嵌套JPanels等等,但我无法看到JButtons不像砖块的好看的gui并且JTextField的大小不是文本的三倍。

4 个答案:

答案 0 :(得分:2)

部分取决于您希望如何分配额外空间。此GUI为文本字段和文本区域提供了额外的宽度,同时保持按钮居中。文本区域有额外的高度。

Basic Layout

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.*;

public class BasicLayout {

    BasicLayout() {
        JPanel gui = new JPanel(new BorderLayout(2,2));

        gui.add(new JTextField(), BorderLayout.PAGE_START);
        gui.add(new JTextArea(3,15));

        JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));
        controls.add(new JButton("Button1"));
        controls.add(new JButton("Button2"));

        gui.add(controls, BorderLayout.PAGE_END);

        JOptionPane.showMessageDialog(null, gui);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new BasicLayout();
            }
        });
    }
}

更新

起初我以为你的意思是JTextArea在中间部分,然后我仔细观察。 JTextPane的大小稍微有些棘手,因为它不接受构造函数中的大小提示。为此,我们可以调整容器的首选大小(在这种情况下,为JScrollPane

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.*;

public class BasicLayout {

    BasicLayout() {
        JPanel gui = new JPanel(new BorderLayout(2,2));

        gui.add(new JTextField(), BorderLayout.PAGE_START);
        JTextPane text = new JTextPane();
        JScrollPane scroll = new JScrollPane(text);
        Dimension d = text.getPreferredSize();
        scroll.setPreferredSize(new Dimension(d.width, d.height*3));
        gui.add(scroll);

        JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));
        controls.add(new JButton("Button1"));
        controls.add(new JButton("Button2"));

        gui.add(controls, BorderLayout.PAGE_END);
        JOptionPane.showMessageDialog(null, gui);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new BasicLayout();
            }
        });
    }
}

答案 1 :(得分:0)

LayoutManager用于简化特定布局。在您的情况下,您似乎想要做一些特定的事情,所以不要使用布局管理器!

在oracle网站上有一个很好的布局指南。本指南的一部分是如何不使用它: http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

祝你的项目好运!

答案 2 :(得分:0)

如果您正在寻找在Netbeans中设计GUI,那么它是可能的。创建Java项目后,选择项目并转到:

File > New File

然后会出现对话框(您已经知道)。

在类别中,选择Swing GUI Forms,然后从选项中选择您想要的任何内容

这是截图 enter image description here

答案 3 :(得分:-1)

最好的方法是使用.setBounds(X,Y,Length,Width) 您可以设置项目的准确定位。它是从X和Y的左上角开始测量的。对于宽度,它随着时间的推移向左移动并且不会移动X.长度和Y值也是如此。

JTextField field = new JTextField(),
field.setBounds(500, 100, 100, 30);
add(field);
相关问题