【发布时间】:2018-04-17 11:33:15
【问题描述】:
我想要这样的组件部署:
我编写了一个代码,在一个 JFrame 中创建了两个 JPanel,并将组件 JPanel 放在左侧。我将 Frame Layout 设置为 BorderLayout,将每个面板的 Layout 设置为 FlowLayout。然而,结果并不是我想要的。连List都没有出现。
结果图片:
你能告诉我该怎么做吗?
下面有一段代码。
package com.java.APISearch;
import java.awt.*;
import javax.swing.*;
import javax.swing.JPanel;
public class MainFrame extends JFrame {
JPanel search;
JPanel result;
JLabel ksLb;
JTextField ksTf;
JButton ksOK;
JCheckBox choicePackage;
JCheckBox choiceClass;
JCheckBox choiceFunc;
JTextField dsTf;
JButton dsOK;
JLabel rcLb;
JList<String> rcList;
JTextField resultTf;
Container contentPane;
public MainFrame(String title) {
super(title);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
setLocation(screenSize.width/2 - 300, screenSize.height/2 - 200);
setSize(new Dimension(600, 400));
setResizable(false);
setLayout(new BorderLayout());
search = new JPanel();
result = new JPanel();
search.setLayout(new FlowLayout(FlowLayout.LEFT));
search.setSize(new Dimension(300,400));
result.setLayout(new FlowLayout());
result.setSize(new Dimension(300,400));
contentPane = getContentPane();
contentPane.add(search, BorderLayout.WEST);
contentPane.add(result, BorderLayout.EAST);
ksLb = new JLabel("키워드 검색");
ksTf = new JTextField(20);
ksOK = new JButton("검색");
search.add(ksLb);
search.add(ksTf);
search.add(ksOK);
choicePackage = new JCheckBox("package");
choiceClass = new JCheckBox("class");
choiceFunc = new JCheckBox("function");
dsTf = new JTextField(20);
dsOK = new JButton("검색");
search.add(choicePackage);
search.add(choiceClass);
search.add(choiceFunc);
search.add(dsTf);
search.add(dsOK);
rcLb = new JLabel("recent search");
rcList = new JList<String>();
search.add(rcLb);
search.add(rcList);
}
}
【问题讨论】:
-
代码很难使用,因为字符不能很好地传输到我的 IDE,结果是每个字符都“丢失字符”。这些图像令人困惑,因为第一个描绘了两个单选按钮,第二个有三个复选框。应该是哪个?
-
不要手动操作。使用一些支持 Swing 的 GUI(例如 NetBeans),您可以在其中轻松调整布局。对于这样的任务,使用可以调整每个单元格的 GridBagLayout 非常有用。
-
如果您只想完成此布局,Don't do it by hands" 是一个很好的建议。如果您想学习构建 swing gui,这是一个坏的建议。
标签: java swing layout-manager