我正在绘制我自己的扩展 JPanel 的组件:
protected void paintComponent(Graphics g) {
这很好用。
我需要做很多准备组件的工作。这项工作取决于组件的尺寸。
组件的尺寸似乎只能在 paintComponent()
函数中使用。所以我现在这样做:
if(firstTime){
//do init
firstTime=false
}
//draw
在我的 paintComponent()
函数中。我不喜欢这个解决方案。
有没有一种方法可以在调用 paintComponent()
函数之前获取尺寸?
(它在构造函数中似乎无效)
最佳答案
有一个选项可以改为绘制到 BufferedImage
。显然(或者至少,我希望这是显而易见的)我们在创建图像时给了图像一个尺寸。
我们得到一个像这样的 Graphics2D
对象:
Graphics2D g = bi.creatGraphics();
图像可以显示在JLabel
中:
JLabel label == new JLabel(new ImageIcon(bi)); // now add the label to something..
在新的绘画调用后刷新标签:
label.repaint();
但就像@HovercraftFullOfEels 一样,我怀疑这是最好的方法。
关于java - 在 paintComponent 之前获取组件尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546967/