java - 如何在 Swing 组件调整大小时出现 "do something"?

标签 java swing

我有一个扩展 JPanel 的类。我覆盖了 protected void paintComponent(Graphics g)

当面板的尺寸发生变化时,必须重新计算一个变量。我该如何以正确的方式做到这一点?

最佳答案

就像 Adam Paynter 建议的那样,您也可以在代码中添加一个内部类,如下所示:

class ResizeListener extends ComponentAdapter {
        public void componentResized(ComponentEvent e) {
            // Recalculate the variable you mentioned
        }
}

您在最里面的括号之间输入的代码将在每次调整组件大小时执行。

然后你将这个监听器添加到你的组件中

myJPanel.addComponentListener(new ResizeListener());

您可以使用 e.getComponent() 来获取您的组件。这样您就可以从内部类中调用组件的任何方法,例如

e.getComponent().getWeight();

关于java - 如何在 Swing 组件调整大小时出现 "do something"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088595/

相关文章:

java/Swing : clipboard paste

java - 将图标插入Java Swing JFrame

java - 如何将给定列中的单个单元格作为 JTable 中的下拉菜单

java - 为 Jinq 创建查询时是否可以使用 Predicate<T> ?

java - 尝试使用 SearchView 过滤 ListView。无论我输入哪个单词,都不会显示任何项目,即使 ListView 上存在相关项目

java - 如何从 Swing 的 JTextField 中获取整数值?

java - jasperreports-4.5.1.jar 包含哪些 jar

Java - 断点命中了多少次?

java - 错误的 catch block 运行

java - 仅在超时后在 Windows 上的相同或不同端口上重新启动 Java RMI 注册表