如何在 Swing 组件大小调整上“做点什么”?
我有一个扩展的类。我覆盖了.JPanel
protected void paintComponent(Graphics g)
有一个变量,当面板的尺寸发生变化时,必须重新计算该变量。我如何以适当的方式做到这一点?
我有一个扩展的类。我覆盖了.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();
我想您可以覆盖各种和方法并在那里执行计算。但是,您可能找不到可以更改大小的所有位置。您可能希望让类实现 ComponentListener,并简单地侦听自身的大小调整事件。setSize
resize
警告:我不是摇摆专家。
警告:我还没有编译这个代码。
public class MyJPanel extends JPanel implements ComponentListener {
public MyJPanel() {
this.addComponentListener(this);
}
public void paintComponent(Graphics g) {
// Paint, paint, paint...
}
public void componentResized(ComponentEvent e) {
// Perform calculation here
}
public void componentHidden(ComponentEvent e) {}
public void componentMoved(ComponentEvent e) {}
public void componentShown(ComponentEvent e) {}
}