• 于是按照贴吧某同学的指教,把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。

      我找来了,不谢。

  • 相关阅读:
    什么是理想?
    leetcode 62. 不同路径-动态规划及优化,双100%
    使用双指针暴力解决力扣28题《实现 strStr()》
    使用双指针解决力扣27题《移除元素》
    SQL SERVER 数据库日志已满时清理日志的方法
    修改git提交的名字和邮箱
    React Native运行出现Could not find "iPhone X" simulator
    eosio 编译与部署
    恢复经常写博客的习惯
    MAC OS系统替换homebrew使用阿里云或中科大的镜像源
  • 原文地址:https://www.cnblogs.com/chihane/p/3502808.html
Copyright © 2020-2023  润新知