我创建了简单的 JDialog
来为我的应用程序获取初始数据。元素(JLabel
、JTextField
和JButton
)在BorderLayout
中按BoxLayout
排列. (代码在最后)。到目前为止它看起来像这样:
我有两个问题:
我想将
JButton
置于其所在行的中心。我尝试了startBtn.setAlignmentX(Component.CENTER_ALIGNMENT);
,但它无法正常工作,出现困惑。我想向
TextField
添加一些左/右填充。第一个解决方案来自 this topic工作正常,但其他元素从右向左移动填充值。
任何人都可以提示如何放置它吗?我是 Java 的新手,对此一无所知。
这是我的 InitDialog
类的代码:
public class InitDialog extends JDialog {
JTextField dataTF;
JButton startBtn;
public InitDialog(JFrame owner) {
super(owner, "Rozpocznij test", Dialog.ModalityType.DOCUMENT_MODAL);
initUI();
}
public final void initUI() {
System.out.println("InitDialog::initUI");
JPanel outer = new JPanel(new BorderLayout());
JPanel inner = new JPanel();
outer.setBorder(new EmptyBorder(new Insets(20, 20, 20, 20)));
JLabel msg = new JLabel("<html>Podaj ilości liczb w zestawach testowych<br />(przedzielone średnikiem):");
inner.add(msg);
inner.add(Box.createVerticalStrut(15));
dataTF = new JTextField();
dataTF.setBorder(null);
dataTF.setText("50; 100; 200");
inner.add(dataTF);
inner.add(Box.createVerticalStrut(15));
startBtn = new JButton("Rozpocznij test");
inner.add(startBtn);
inner.setLayout(new BoxLayout(inner, BoxLayout.Y_AXIS));
outer.add(inner);
add(outer);
setSize(300, 180);
//setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setResizable(false);
setLocationRelativeTo(getRootPane());
}
}
最佳答案
BoxLayout 对齐不是你想象的那样。
为了得到你想要的,这是你需要的行
msg.setAlignmentX(Component.CENTER_ALIGNMENT);
关于java - 在 BoxLayout 中居中 JButton,JTextField 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183963/