0

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

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

我已经尝试过BorderLayout, GridLayout, nestedJPanels等,但我无法获得一个好看的 gui,其中 guiJButtons不像砖块,JTextField也不是文本大小的三倍。

4

4 回答 4

2

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

基本布局

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​​中间部分,后来我仔细看了看。AJTextPane的大小有点棘手,因为它不接受构造函数中的大小提示。为此,我们可以为其调整容器的首选大小(在本例中为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();
            }
        });
    }
}
于 2012-06-06T06:14:56.740 回答
0

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

File > New File

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

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

这是一个截图 在此处输入图像描述

于 2012-06-06T05:11:22.927 回答
0

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

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

祝你的项目好运!

于 2012-06-06T00:45:52.697 回答
-1

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

JTextField field = new JTextField(),
field.setBounds(500, 100, 100, 30);
add(field);
于 2012-06-06T04:53:59.980 回答