我将组件的宽度和高度设置为实例变量(在组件的子类中)有问题。 如果我在构造函数中调用getWidth()和getHeight() (总是为零),则这些值与在paintComponent(Graphics g)调用相同的方法不同。 有人可以解释为什么会发生这种情况,我怎样才能将组件的宽度和高度设置为实例变量。 非常感谢提前。
这是一段代码:
import java.awt.Graphics;
import javax.swing.JComponent;
public class MyComponent extends JComponent
{
// Instance variables.
private int width;
private int height;
public MyComponent()
{
width = getWidth();
height = getHeight();
System.out.println(width+","+height);
}
public void paintComponent(Graphics g)
{
// Local variables.
int width = this.getWidth();
int height = this.getHeight();
System.out.println(width+","+height);
}
}
import javax.swing.JFrame;
public class ComponentTester
{
public static void main(String args[])
{
JFrame frame = new JFrame();
MyComponent component = new MyComponent();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(350, 400);
frame.setVisible(true);
frame.add(component);
}
}