想要这样的效果
[img]http://dl.iteye.com/upload/attachment/440779/d7a98e07-be54-3a5f-bf61-3aa62293acaf.png[/img]
[img]http://dl.iteye.com/upload/attachment/440805/628c995e-df78-33ee-a0b5-9fe257736b6b.png[/img]
点击detail按钮,动态显示局部面板,并更改整个窗体的大小.
我是给局部panel用setVisable()来控制动态显示.
然后用this.pack()来动态适应大小.
不过貌似,显示或不显示,大小总在那儿...
请各位了支招....谢谢...
我写了个简单的例子,感觉是可以正常的缩放的呢
[code="java"]public class FrameTest implements ActionListener {
private JPanel northPanel = new JPanel();
private JPanel centerPanel = new JPanel();
private JFrame frame = new JFrame("Test");
public FrameTest() {
init();
}
private void init() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
JTextField tf = new JTextField();
JButton btn = new JButton("Detail...");
btn.addActionListener(this);
northPanel.add(new JLabel("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
centerPanel.add(new JLabel("bbbbbbbbbbbbbbbbbbbbbbbbbbbb"));
centerPanel.setVisible(false);
frame.add(BorderLayout.NORTH, northPanel);
frame.add(BorderLayout.CENTER, centerPanel);
frame.add(BorderLayout.SOUTH, btn);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
centerPanel.setVisible(!centerPanel.isVisible());
frame.pack();
}
public static void main(String[] args) {
new FrameTest();
}
}[/code]
去看 Swing Hacks 书中第39个技巧