首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写JComponent方法

重写JComponent方法
EN

Stack Overflow用户
提问于 2014-07-07 21:34:23
回答 1查看 161关注 0票数 0

运行此代码后,窗口大小为0x0。我可以通过在主方法中写入"f.setSize(640,480)“来修复它。我听说这很糟糕,所以..。是否有办法使这一压倒一切的工作?

代码语言:javascript
复制
public class Gui {

    public static void main(String[] args) throws IOException {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().setBackground(Color.BLACK);
        f.add(new DrawingPad());
        f.setVisible(true); 
    }
 }

class DrawingPad extends JComponent{
    Image img = new ImageIcon("res/icon.jpg").getImage();
    Dimension d = new Dimension(640, 480);

    public void paintComponent(Graphics g){
        g.drawImage(img, 50, 50, null);
    }

    @Override
    public Dimension getPreferredSize(){return d;}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-07 21:37:11

在使框架可见之前调用f.pack()

来自javadoc的报价

使此窗口的大小符合其子组件的首选大小和布局。如果其中一个维度小于上一次对setMinimumSize方法的调用指定的最小大小,则窗口的宽度和高度将自动增大。

此外,不应使用主线程中的swing组件。只来自事件分派线程。读取http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24620264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档