java - 在 paintComponent 之前获取组件尺寸?

标签 java swing

我正在绘制我自己的扩展 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/

相关文章:

java - Intent 不提取额外的

java - 具有空兴趣集的 SelectionKey

java - 如何编写一个 [递归?] 函数来迭代 JMenu 层次结构中的(子)MenuElements?

java - 传递数据参数来更新 SQL 表

java - 用java实现定时器

java - 如何通过 Fiddler 强制 Java applet 的网络流量?

java - BlackJack 程序,字符串值问题

java - 我该如何用扫描仪(java)处理它?

java - 在循环中使用 JFrame.pack()

java - 将 Java Swing 应用程序大小限制为屏幕大小?