0

我有一个网格包布局,我在其中初始化了一个 gbc.insets = Insets(0,0,0,); 稍后我想在发生某些操作时调整此插图的大小。我试过改变这个值,然后做一个 repaint() 但这不起作用?我需要做什么?非常感谢你!

class myGraph {

    private Insets myInsets = new Insets(0,0,0,0);

    ...
    gbc.insets = myInsets; // setting Gridbag constraints.



    Action Listener {

        ............... 
        myInsets.top =30;
        myInsets.bottom =40;
        myGraph.repaint();
    }
}
4

1 回答 1

3

您需要更新 GridBagLayout:

GridBagLayout layout = new GridBagLayout();
JPanel panel = new JPanel(layout);
...
layout.setConstraints(myComponent, anotherConstraint);
// do this for all the components you want to update
panel.revalidate();
panel.repaint();

GridBagLayout 在您添加组件时会克隆您的约束,因此您需要告诉 LayoutManager 您要更改这些约束。简单地修改约束值绝对没有效果。

顺便说一句, repaint() 只是执行“绘画”操作,而不是布局。请改用 revalidate()。

于 2012-05-14T18:53:25.270 回答