首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

将Jpanel添加滚动条,无法动态使JPanel变大解决方案

2012-01-28 
将Jpanel添加滚动条,无法动态使JPanel变大这段程序本意是想点击按钮,让panel变大,然后出现滚动条Java code

将Jpanel添加滚动条,无法动态使JPanel变大
这段程序本意是想点击按钮,让panel变大,然后出现滚动条

Java code
public class MyFrame extends JFrame {    private static final long serialVersionUID = 1L;        private JPanel panel;    private JButton button;        public MyFrame()    {        setSize(new Dimension(400,300));        setLayout(new BorderLayout());        panel=new JPanel();        JScrollPane js=new JScrollPane(panel);        panel.setBackground(Color.RED);        getContentPane().add(js,BorderLayout.NORTH);        button=new JButton("点击变大");        button.setSize(100, 50);        add(button,BorderLayout.SOUTH);        button.addActionListener(new ActionListener(){            public void actionPerformed(ActionEvent arg0) {                int x=MyFrame.this.getPanel().getWidth();                int y=MyFrame.this.getPanel().getHeight()+20;                MyFrame.this.getPanel().setSize(x, y);                MyFrame.this.repaint();            }                    });        getContentPane().add(button,BorderLayout.SOUTH);        setVisible(true);    }        public JPanel getPanel()    {        return this.panel;    }        public static void main(String[] args)    {        new MyFrame();    }}


[解决办法]
加个JScrollPane,把JPanel放进去
[解决办法]
用setPreferredSize(Dimension preferredSize)
[解决办法]
试试这个,应该好了:
public class MyFrame extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel panel;
private JButton button;

public MyFrame()
{
setSize(new Dimension(400,300));
setLayout(new BorderLayout());
panel=new JPanel();
JScrollPane js=new JScrollPane(panel);
panel.setBackground(Color.RED);
// js.setPreferredSize(new Dimension(100,80));
getContentPane().add(js,BorderLayout.CENTER);
button=new JButton("Zoom in");
add(button,BorderLayout.SOUTH);
button.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
int x=MyFrame.this.getPanel().getWidth();
int y=MyFrame.this.getPanel().getHeight()+20;
getPanel().setPreferredSize(new Dimension(x, y));
getPanel().setSize(getPanel().getPreferredSize());
//MyFrame.this.repaint();
}

});
getContentPane().add(button,BorderLayout.SOUTH);
setVisible(true);
}

public JPanel getPanel()
{
return this.panel;
}

public static void main(String[] args)
{
new MyFrame();
}
}
[解决办法]
还有,记的区别setSize和setPreferredSize。
这里要使用setPreferredSize。 不多说了,请自己去看一下源代码。这些细节的区别文档给出的不多。

热点排行