我可以增加JPanel的大小吗?
问题描述:
我在这里有一些代码,当按下按钮时,我试图扩展JPanel。但是,它仍然处于以前的高度。有没有办法做到这一点,或者它是否固定在它创建时的尺寸上?我可以增加JPanel的大小吗?
public class GUITest extends JFrame {
JPanel jp;
JButton one;
public static void main(String[] args) {
new GUITest();
}
public GUITest() {
initWidgets();
}
public void initWidgets() {
setSize(250, 250);
setTitle("Stretch Panel Example");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
one = new JButton("Click me!");
ActionListener extend = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 80; i++) {
jp.setPreferredSize(new Dimension(200,(i+70)));
}
//System.out.println(jp.getHeight());
}
};
one.addActionListener(extend);
add(one, BorderLayout.NORTH);
jp = new JPanel();
jp.setBackground(Color.BLACK);
jp.setPreferredSize(new Dimension(200,70));
add(jp, BorderLayout.CENTER);
setVisible(true);
}
}
答
或者,你可以调用重新验证()上的按钮后点击的JPanel
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 80; i++) {
jp.setPreferredSize(new Dimension(200,(i+70)));
**jp.revalidate();**
}
//System.out.println(jp.getHeight());
}
澄清,一旦更改尺寸,它必须被重新绘制。事情已经改变了,但它并没有被告知要更新改变视觉
答
您应该使用validate()
方法来做到这一点。 我希望我能够帮助!
祝您有美好的一天!
答
试试这个:
jp.setSize(new Dimension(200,(i+70)));
,而不是jp.setPreferredSize(new Dimension(200,(i+70)));
增加10:
ActionListener extend = new ActionListener() {
int count=0;
public void actionPerformed(ActionEvent e) {
count=count+10;
jp.setSize(new Dimension(100+count,70+count));
System.out.println("in listener");
}
};
还有一件事setPreferredsize是每当组件调用时的默认大小重新进行验证。要更改每个点击setPrefferedSize:
count=count+10;
jp.setSize(new Dimension(100+count,70+count));
jp.setPreferredSize(new Dimension(100+count,70+count));
@HovercraftFullOfEels看的javadoc后,我看到了真正的尊重首选大小....不好回答,对不起,已经删除了它 – fredcrs