- 进行GUI编程时,我画出的界面总是不能很好的与式样吻合,对swing布局管理也不是很熟悉,开始做成的界面每个控件都被拉到了界面的边缘,非常不顺眼,一直试图通过设置控件的位置来解决这个问题,可是总也查不到。刚开始的代码是这个样子的:
- private JPanel getMergePanel() {
String[] mergeNames = LanData.getMergeFileNames();
mergePanel = new JPanel(new GridLayout(mergeNames.length + 2, 1, 5, 8));
mergePanel.add(getLabelPanel());
dataTextFields = new JTextField[mergeNames.length];
for (int i = 0; i < mergeNames.length; i++) {
JPanel panel = new JPanel(new BorderLayout());
JLabel label = new JLabel(mergeNames[i]);
label.setPreferredSize(new Dimension(125, 27));
panel.add(label, BorderLayout.WEST);
dataTextFields[i] = new JTextField();
panel.add(dataTextFields[i], BorderLayout.CENTER);
JButton button = new JButton("選択");
button.setPreferredSize(new Dimension(60, 27));
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(MergeFileChooser.this);
}
});
panel.add(button, BorderLayout.EAST);
mergePanel.add(panel);
}
return mergePanel; - 新手确实是经验不足,简直是冥思苦想,百思不得其解,想去网上查,可是连应该怎样在百度搜索都没法下手,折腾了大半天,才想出了一个笨办法,在控件里面又套了几层控件,因为是单纯为了画出一些空白区域,所以就套上了一些空的JPanel,结果效果还不错,稍微感到一些欣慰,修改后的代码是这样的:
- private JPanel getMergePanel() {
JPanel newPanel = new JPanel(new BorderLayout());
JPanel lsftPanel = new JPanel();
JPanel rightPanel = new JPanel();
newPanel.add(lsftPanel, BorderLayout.WEST);
newPanel.add(rightPanel, BorderLayout.EAST);
String[] mergeNames = LanData.getMergeFileNames();
mergePanel = new JPanel(new GridLayout(mergeNames.length + 2, 1, 5, 8));
mergePanel.add(getLabelPanel());
dataTextFields = new JTextField[mergeNames.length];
for (int i = 0; i < mergeNames.length; i++) {
JPanel panel = new JPanel(new BorderLayout());
JLabel label = new JLabel(mergeNames[i]);
label.setPreferredSize(new Dimension(125, 27));
panel.add(label, BorderLayout.WEST);
dataTextFields[i] = new JTextField();
panel.add(dataTextFields[i], BorderLayout.CENTER);
JButton button = new JButton("選択");
button.setPreferredSize(new Dimension(60, 27));
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(MergeFileChooser.this);
}
});
panel.add(button, BorderLayout.EAST);
mergePanel.add(panel);
}
mergePanel.add(getCarryButtonPanel());
newPanel.add(mergePanel, BorderLayout.CENTER);
return newPanel;
} - 如果想更容易做出赏心悦目的界面,看来布局管理还值得好好研究一下,加油!
swing进行GUI编程时遇到的一点小麻烦
最新推荐文章于 2022-04-27 09:37:17 发布