java - 什么时候是 Swing 组件 'displayable' ?

标签 java swing graphics

有没有办法(例如,通过事件?)确定 Swing 组件何时变为“可显示”——根据 Component.getGraphics 的 Javadocs ?

我尝试这样做的原因是我可以调用 getGraphics(),并将其传递给我的组件“渲染策略”。

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

谢谢。

此外,保留我收到的 Graphics 对象是否可以?或者是否有可能在 Component 的生命周期后期创建一个新组件? (例如,在调整大小/隐藏之后?)

最佳答案

添加一个 HierarchyListener

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));

关于java - 什么时候是 Swing 组件 'displayable' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878694/

相关文章:

java - 计算贝塞尔剪裁中的距离函数时遇到问题

Java 图形不显示

c# 填充除 GraphicsPath 以外的所有内容

java - 如何在 Spring Batch : Updated 中循环运行步骤

java - Spring 中的有状态和无状态 Bean

java - 如何使用 swing 创建可扩展面板?

java - Java Swing 中具有换行和换行功能的面板

java - 从输入流java读取html

Java Apache POI Excel读取异常

java - JScrollPane 的底部被切断