gpt4 book ai didi

java - 从 paintComponent 方法调整大小

转载 作者:行者123 更新时间:2023-11-30 05:51:00 26 4
gpt4 key购买 nike

我有这个小代码

public class Test extends JFrame {

public static void main(String[] args) {
new Test();
}

Test() {
getContentPane().add(new MyPanel());

pack();
setVisible(true);
}

private class MyPanel extends JPanel {

@Override
protected void paintComponent(Graphics g) {
setSize(640, 480);
setPreferredSize(new Dimension(640, 480));
setMinimumSize(new Dimension(640, 480));
g.fillRect(20, 20, 50, 50);
}

}

不幸的是,在调用 pack() 后,框架没有调整到嵌套面板的大小。我已经阅读了该主题的相关答案,但都没有帮助。你能给我一个解决方案吗?

最佳答案

pack() 被执行时,面板仍然不可见,它的 paintComponent() 没有被执行,因此 setPreferredSize()也没有被执行。

但不要从 paintComponent() 调用 setPreferredSize。在 paintComponent 中进行绘画,别无他法。避免将程序逻辑放入该方法中。绘画操作应该快速和优化以获得更好的性能和用户体验。参见 Performing Custom Painting更多细节。

覆盖面板的 getPrefferedSize(),或者至少在 pack() 之前执行 setPrefferedSize。

另见 Should I avoid the use of set[Preferred|Maximum|Minimum]Size methods in Java Swing .

关于java - 从 paintComponent 方法调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com