【发布时间】:2014-08-18 13:39:40
【问题描述】:
我有一个带 BorderLayout 的 JFrame,我在 NORTH 有一个 JTextPane/JScrollPane,在 CENTER 有一个 splitpane,在 SOUTH 有一个带有 4 个 JButtons 的 JPanel。我的框架尺寸是 (500, 470)。我希望 JTextPane 填充大部分窗口,所以我将其 preferredSize 设置为 (500, 450) 但它没有效果。
这是关于发生了什么的图片:http://postimg.org/image/3wslmppx7/
这是我的代码:
public void initGUI()
{
configWindow = new JFrame();
configWindow.setTitle(node.getDispName()+ " [" + node.getIp() + "] configuration");
configWindow.setSize(500, 470);
configWindow.setLocation(TopologyMain.dim.width/2-configWindow.getSize().width/2, TopologyMain.dim.height/2-configWindow.getSize().height/2);
configWindow.getContentPane().setLayout(new BorderLayout());
configPane = new JTextPane();
configPane.setEditable(true);
configPane.setName("Config");
configPane.setPreferredSize(new Dimension(500, 450));
configPane.setBackground(Color.black);
configPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));
scrollPane = new JScrollPane(configPane);
scrollPane.setPreferredSize(new Dimension(500, 450));
configWindow.getContentPane().add(scrollPane, BorderLayout.NORTH);
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridBagLayout());
//buttonPanel.setPreferredSize(new Dimension(500, 20));
GBC.insets = new Insets(5,5,5,5);
read = new JButton("Read");
GBC.gridx = 0;
GBC.gridy = 1;
GBC.fill = GridBagConstraints.HORIZONTAL;
buttonPanel.add(read, GBC);
apply = new JButton("Apply");
GBC.gridx = 1;
GBC.gridy = 1;
GBC.fill = GridBagConstraints.HORIZONTAL;
buttonPanel.add(apply, GBC);
load = new JButton("Load");
GBC.gridx = 2;
GBC.gridy = 1;
GBC.fill = GridBagConstraints.HORIZONTAL;
buttonPanel.add(load, GBC);
save = new JButton("Save");
save.setEnabled(false);
GBC.gridx = 3;
GBC.gridy = 1;
GBC.fill = GridBagConstraints.HORIZONTAL;
buttonPanel.add(save, GBC);
configWindow.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, scrollPane, buttonPanel);
splitPane.setEnabled(true);
configWindow.getContentPane().add(splitPane, BorderLayout.CENTER);
configWindow.setVisible(true);
fileChooser = new JFileChooser();
}
【问题讨论】:
-
你在哪里打电话给
pack()? -
不,我不使用它。
-
嗯,你可能应该这样做。检查its documentation。请记住,仅在将所有内容添加到窗口后才调用它。
-
成功了,感谢您的时间和帮助。
标签: java swing jscrollpane layout-manager jtextpane