修复了 JTextField 的高度和宽度
Fixed height and width for JTextField
我最近一直在使用 Java Swing,当我尝试在彼此下方添加 3 个 JTextField 时,它们会填满整个 JFrame。但我希望它们具有固定的高度和宽度。我能做什么?
由于我是这个主题的新手,所以我无法尝试很多东西。我在其他论坛也没找到。
我的目标是为用户制作一个简单的 GUI 来填写他们的凭据。这些凭据应该填充到一个数组中,但我还没有到那里。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PeopleGUI extends JFrame{
JPanel jp = new JPanel();
JLabel jl = new JLabel();
JTextField jt = new JTextField(30);
JTextField jt1 = new JTextField(30);
JTextField jt2 = new JTextField(30);
JButton jb = new JButton("Enter");
public PeopleGUI(){
setTitle("PeopleGUI");
setVisible(true);
setSize(400,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
jp.add(jt);
jp.add(jt1);
jp.add(jt2);
jt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String input = jt.getText();
jl.setText(input);
}
});
jp.add(jb);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String input = jt.getText();
jl.setText(input);
}
});
jp.add(jl);
add(jp);
}
public static void main(String[] args) {
PeopleGUI p = new PeopleGUI();
}
}
我希望 JTextFields 不会根据 window 的大小进行调整。
目前,它看起来像这样:
.
但它应该看起来像:
.
您必须使用布局,例如盒子布局。您会找到一些文档 here
通过将 3 个面板(每个面板居中 FlowLayout
)放入一个列 GridLayout
中,可以轻松重现该布局。
重要的 部分是 FlowLayout
,这将尊重它显示的组件的首选大小。
Combinations of different layouts在制作GUI的时候经常用到。这个想法是让每个人处理整个用户界面的一小部分布局需求。这是该答案的屏幕截图,其中通过每个布局的标题边框列出了使用的布局。
但我认为如果标签的右轴和字段的左轴垂直对齐会更好。为此,请使用单个 GridBagLayout
.
我最近一直在使用 Java Swing,当我尝试在彼此下方添加 3 个 JTextField 时,它们会填满整个 JFrame。但我希望它们具有固定的高度和宽度。我能做什么?
由于我是这个主题的新手,所以我无法尝试很多东西。我在其他论坛也没找到。
我的目标是为用户制作一个简单的 GUI 来填写他们的凭据。这些凭据应该填充到一个数组中,但我还没有到那里。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PeopleGUI extends JFrame{
JPanel jp = new JPanel();
JLabel jl = new JLabel();
JTextField jt = new JTextField(30);
JTextField jt1 = new JTextField(30);
JTextField jt2 = new JTextField(30);
JButton jb = new JButton("Enter");
public PeopleGUI(){
setTitle("PeopleGUI");
setVisible(true);
setSize(400,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));
jp.add(jt);
jp.add(jt1);
jp.add(jt2);
jt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String input = jt.getText();
jl.setText(input);
}
});
jp.add(jb);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String input = jt.getText();
jl.setText(input);
}
});
jp.add(jl);
add(jp);
}
public static void main(String[] args) {
PeopleGUI p = new PeopleGUI();
}
}
我希望 JTextFields 不会根据 window 的大小进行调整。
目前,它看起来像这样:
但它应该看起来像:
您必须使用布局,例如盒子布局。您会找到一些文档 here
通过将 3 个面板(每个面板居中 FlowLayout
)放入一个列 GridLayout
中,可以轻松重现该布局。
重要的 部分是 FlowLayout
,这将尊重它显示的组件的首选大小。
Combinations of different layouts在制作GUI的时候经常用到。这个想法是让每个人处理整个用户界面的一小部分布局需求。这是该答案的屏幕截图,其中通过每个布局的标题边框列出了使用的布局。
但我认为如果标签的右轴和字段的左轴垂直对齐会更好。为此,请使用单个 GridBagLayout
.