zoukankan      html  css  js  c++  java
  • 于是按照贴吧某同学的指教,把imageViewer里那个愚蠢的语句改了

      于是开心地升级到了V1.1版本

      等我先消化下知识再来更新。

      关键在于面板的setPreferredSize(Dimension d)方法和框架的pack()方法。

    ========================================================================================

      大概就是说,用了布局管理器的话,管理器会根据preferredSize来安排控件大小,用setSize的话不一定会起作用,所以我之前直接改变面板的大小然后pack框架,最后出来的效果是框架高度变成0,大概就是因为preferredSize默认是0。………………对么?

      总之,用setPreferredSize才是正确的设定面板大小的方法。

      至于pack,就是根据框架内容来重新计算框架大小,似乎是很智能,所以不用想太多。

      按照我以前的做法,结果就是打开了文件之后按照图片大小改变框架大小,然后面板就因为布局管理器而自动扩大,但是图大框架大,它框架还包含边框啊,于是能用来显示的地方就小,于是图就挤到窗口外面了。

      现在呢,打开了文件之后我按照图片大小设置面板大小,这样面板就挤出去了,然后再调用框架的pack方法,自动按照内容物大小来扩大框架,就不用担心边框的问题了,于是就搞定了。

      不过还有一个问题搞不懂。

    public void actionPerformed(ActionEvent e) {
        Image img;
        if ((img = getImage()) != null) {
            parent.getPanel().setImage(img);
            parent.getPanel().setPreferredSize(new Dimension(img.getWidth(parent), img.getHeight(parent)));
            parent.pack();
        } else {
            return;
        }
    }

      我之前在setImage之后还加了一句repaint(),然后发现注释掉也不影响显示,就删掉了。

      于是现在我只是用setImage方法改变了面板的属性,就是一个图片对象的引用,那它到底是什么时候重新绘制内容的?

      请自行脑内配上少年包青天的那个悬疑BGM。

      我找来了,不谢。

  • 相关阅读:
    一个可以用的Lua的Class函数
    写一个可以用的Lua打印Table的函数
    关于C#的接口的碎碎念
    C#中接口是值类型还是引用类型?
    Effective C++笔记_条款31将文件间的编译依存关系降至最低
    Effective C++ 阅读笔记_条款27 尽量少做转型动作
    Flask--开发全套
    python之元类
    Django之模板层
    go打开文件
  • 原文地址:https://www.cnblogs.com/chihane/p/3502808.html
Copyright © 2011-2022 走看看