如何在java中为Swing组件制作特定大小? gui应该看起来像这样......
+++++++++++++++++
+ TextField +
+++++++++++++++++
+ +
+ TextPane +
+ +
+++++++++++++++++
+Button +Button +
+++++++++++++++++
我已尝试BorderLayout
,GridLayout
,嵌套JPanels
等等,但我无法看到JButtons
不像砖块的好看的gui并且JTextField
的大小不是文本的三倍。
答案 0 :(得分: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
在中间部分,然后我仔细观察。 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
,然后从选项中选择您想要的任何内容
这是截图
答案 3 :(得分:-1)
最好的方法是使用.setBounds(X,Y,Length,Width) 您可以设置项目的准确定位。它是从X和Y的左上角开始测量的。对于宽度,它随着时间的推移向左移动并且不会移动X.长度和Y值也是如此。
JTextField field = new JTextField(),
field.setBounds(500, 100, 100, 30);
add(field);