swing开发问题记录
1,今天用swing绘制的时候,发现一个十分奇怪的事情,绘制在frame的contentPane中的 树treeView
在frame最小化,然后还原以后,树不见了。
发现是因为在treeView的下面还有一个JScrollPane,初步怀疑是因为在frame最小化还原的时候,
JScrollPane的位置发生了变化,没有在contentPane中显示了,导致JScrollPane中的treeView也没有
显示,去掉JScrollPane以后,没有问题了。 具体的原因没有仔细研究,以后再分析JScrollPane吧。
frame = new JFrame("TaxonomyEditor"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // getContentPane contentPane = frame.getContentPane(); // Tree View dtsTreeView = new JTree(); dtsTreeView.setVisible(false); // // scrollPane = new JScrollPane(dtsTreeView); // scrollPane.setAutoscrolls(true); // scrollPane.setSize(680, 1); // scrollPane.setVisible(true); // contentPane.add(dtsTreeView); contentPane.setVisible(true); frame.pack(); frame.setSize(700, 700); frame.setVisible(true);
2,pack是调整窗口大小,尽量满足每一个组件的最优大小的情况下让窗口最小化。所以很多时候要修改窗口
的大小setSize方法应该在pack方法之后调用。
frame.getContentPane().add(this.panel); frame.pack(); frame.setSize(800, 400); frame.setVisible(true);