【发布时间】:2014-06-15 02:43:54
【问题描述】:
我有一个关于如何在我的 GUI 上对齐组件的问题。
参考上面的屏幕截图,我希望复选框相互对齐,但在这里我得到了一个不符合要求的复选框(LC 代理),因为在同一行。
任何人都可以建议我应该进行必要的更改以实现我想要的吗? (也欢迎其他关于如何改进代码/显示的建议!)
(P/S 抱歉,如果标题具有误导性;不知道我还能如何命名)
这是我的 GUI 的代码:
/**
* Builds the elements for the GUI
*/
private void build() {
// define properties
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation(100, 100);
this.setSize(360, 250);
this.setResizable(false);
// build elements
movFileField = new JTextField(30);
movFileField.setEditable(false);
JLabel textFieldLabel = new JLabel("MOV file: ");
textFieldLabel.setLabelFor(movFileField);
JPanel filenamePane = new JPanel();
filenamePane.setLayout(new FlowLayout());
filenamePane.add(textFieldLabel);
filenamePane.add(movFileField);
JCheckBox checkIPV = new JCheckBox("IPV Proxy");
checkIPV.setSelected(configMap.get(EpoxyConfigField.IPV_PROXY.name()).isEnabled());
toggleMap.put(EpoxyConfigField.IPV_PROXY, checkIPV);
flickComps.add(checkIPV);
JCheckBox checkITX = new JCheckBox("ITX Proxy");
checkITX.setSelected(configMap.get(EpoxyConfigField.ITX_PROXY.name()).isEnabled());
toggleMap.put(EpoxyConfigField.ITX_PROXY, checkITX);
flickComps.add(checkITX);
JCheckBox checkLC = new JCheckBox("LC Proxy");
checkLC.setSelected(configMap.get(EpoxyConfigField.LC_PROXY.name()).isEnabled());
toggleMap.put(EpoxyConfigField.LC_PROXY, checkLC);
flickComps.add(checkLC);
JComboBox<String> comboLCProfile = new JComboBox<String>("A;C;D;Dxd;E".split(";"));
JCheckBox checkArchive = new JCheckBox("Archive Asset");
checkArchive.setSelected(configMap.get(EpoxyConfigField.ARCHIVE.name()).isEnabled());
toggleMap.put(EpoxyConfigField.ARCHIVE, checkArchive);
flickComps.add(checkArchive);
JPanel checkboxPane = new JPanel();
checkboxPane.setLayout(new BoxLayout(checkboxPane, BoxLayout.PAGE_AXIS));
checkboxPane.add(checkIPV);
checkboxPane.add(checkITX);
// This is the part I'm having problems with
JPanel lcproxyPane = new JPanel();
lcproxyPane.add(checkLC);
lcproxyPane.add(comboLCProfile);
checkboxPane.add(lcproxyPane);
checkboxPane.add(checkArchive);
checkboxPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
JButton processButton = new JButton("Process");
processButton.setActionCommand(COMMAND_PROCESS);
processButton.addActionListener(this);
flickComps.add(processButton);
JButton selectButton = new JButton("Select");
selectButton.setActionCommand(COMMAND_SELECT);
selectButton.addActionListener(this);
flickComps.add(selectButton);
statusField = new JTextArea(10,20);
statusField.setEditable(false);
statusField.setLineWrap(true);
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS));
buttonPane.add(Box.createRigidArea(new Dimension(50, 0)));
buttonPane.add(processButton);
buttonPane.add(Box.createHorizontalGlue());
buttonPane.add(selectButton);
buttonPane.add(Box.createRigidArea(new Dimension(50, 0)));
buttonPane.setBorder(BorderFactory.createEmptyBorder(0,10,10,10));
JPanel bottomPane = new JPanel();
bottomPane.setLayout(new BoxLayout(bottomPane, BoxLayout.PAGE_AXIS));
bottomPane.add(buttonPane);
bottomPane.add(new JScrollPane(statusField));
Container contentPane = this.getContentPane();
contentPane.add(filenamePane, BorderLayout.PAGE_START);
contentPane.add(checkboxPane, BorderLayout.CENTER);
contentPane.add(bottomPane, BorderLayout.PAGE_END);
this.pack();
}
【问题讨论】:
标签: java swing user-interface alignment