Swing组件什么时候可以“显示”?

Joe*_*man 5 java graphics swing

是否有一种方法(例如,通过事件?)来确定Swing组件何时变得“可显示”(根据Component.getGraphics的Javadocs)?

我尝试执行此操作的原因是可以调用getGraphics(),然后将其传递给组件的“渲染策略”。

我尝试添加ComponentListener,但componentShown似乎没有被调用。还有什么我可以尝试的吗?

谢谢。

另外,可以保留Graphics我收到的物品吗?还是有可能在产品生命周期的后期创建一个新产品Component?(例如,在调整大小/隐藏之后?)

Kit*_*YMG 4

添加层次结构监听器

public class MyShowingListener {
private JComponent component;
public MyShowingListener(JComponent jc) { component=jc; }

public void hierarchyChanged(HierarchyEvent e) {
    if((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED)>0 && component.isShowing()) {
        System.out.println("Showing");
    }
}
}

JTable t = new JTable(...);
t.addHierarchyListener(new MyShowingListener(t));
Run Code Online (Sandbox Code Playgroud)