按钮水平放置,一个接一个地帮助我,如何让它们垂直进入屏幕。我尝试添加SwingConstants.xxxx然后item.SwingConstants.xxx得到错误水平对齐。任何帮助赞赏。 (想要坚持这种风格的程序)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class Class_GUI_4 extends JFrame {
private JTextField tf; // textfield
private JCheckBox b1; // button 1
private JCheckBox b2; // button2
public Class_GUI_4() {
super("TITLE");
setLayout(new FlowLayout());
tf = new JTextField("A testing Sentence", 20);
tf.setFont(new Font("Serif", Font.PLAIN, 14));
add(tf);
b1 = new JCheckBox("Bold");
b2 = new JCheckBox("Italic");
add(b1);
add(b2);
thehandler handler = new thehandler();
b1.addItemListener(handler);
b2.addItemListener(handler);
}
private class thehandler implements ItemListener {
@Override
public void itemStateChanged(ItemEvent event) {
Font font = null;
if (b1.isSelected() && b2.isSelected())
font = new Font("Serif", Font.BOLD + Font.ITALIC, 14);
else if (b1.isSelected())
font = new Font("Serif", Font.BOLD, 14);
else if (b2.isSelected())
font = new Font("Serif", Font.ITALIC, 14);
else
font = new Font("Serif", Font.PLAIN, 14);
tf.setFont(font);
}
}
public static void main(String[] args) {
Class_GUI_4 gui = new Class_GUI_4();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(200, 350);
gui.setVisible(true);
}
}
答案 0 :(得分:1)
如何让它们垂直进入屏幕?
尝试使用BoxLayout
setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
在这种情况下,而不是FlowLayout在方向流中排列组件,就像段落中的文本行一样。
setLayout(new FlowLayout());
在这种情况下, 使用GridLayout
添加相同大小的组件,如下所示:
相反,您可以尝试使用GridBagLayout。详细了解How to Use GridBagLayout
示例代码:(根据您的要求以百分比更改高度)
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.fill = GridBagConstraints.BOTH;
//Set the margin between components top, left, bottom, right
//gc.insets=new Insets(5, 5, 5, 5);
tf = new JTextField("A testing Sentence", 20);
tf.setFont(new Font("Serif", Font.PLAIN, 14));
gc.gridx = 0; // 1st row
gc.gridy = 0; // 1st column
gc.weighty = 0.9; // 90%
add(tf, gc);
b1 = new JCheckBox("Bold");
b2 = new JCheckBox("Italic");
gc.gridy = 1; // 2nd column
gc.weighty = 0.05;// 5%
add(b1, gc);
gc.gridy = 2; // 3rd column
gc.weighty = 0.05;// 5%
add(b2, gc);
答案 1 :(得分:0)
您必须使用Layout Manager格式化UI组件,您可以在布局之间进行选择,以帮助您制作Grid Layout或Box Layout的垂直对齐。
答案 2 :(得分:0)
这是因为您使用的布局管理器是FlowLayout()。
setLayout(new FlowLayout());
使用GridLayout管理器代替代码:
setLayout(new GridLayout(1,3)