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

  我找来了,不谢。

转载于:https://www.cnblogs.com/chihane/p/3502808.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础(六)--类与对象

目录 Python基础(六)--类与对象 1 类与对象的基本概念 1.1 什么是对象 1.2 什么是类 1.3 类与对象的关系 2 定义与初始化 2.1 类的定义 2.2 对象的初始化 2.3 动态增加属性方法 3 类成员 3.1 类属性与实例属性 3.2 类方法与实例方法 3.3 静态…

HTTP和HTTPS的请求和响应

HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入…

LeetCode 794. 有效的井字游戏(分类讨论)

文章目录1. 题目2. 解题1. 题目 用字符串数组作为井字游戏的游戏板 board。当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时,才返回 true。 该游戏板是一个 3 x 3 数组,由字符 " ","X&quo…

Requests: 让 HTTP 服务人类

Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。 Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前…

Python基础(七)--模块和包

目录 Python基础(七)--模块和包 1 模块 1.1 什么是模块 1.2 模块的使用 1.3 模块的搜索路径 1.4 模块的缓存 2 包 2.1 什么是包 2.2 包的使用 3 常用模块 3.1 math 3.2 random 3.3 time 3.4 datetime 3.5 sys Python基础(七&am…

LeetCode 909. 蛇梯棋(BFS)

文章目录1. 题目2. 解题1. 题目 N x N 的棋盘 board 上,按从 1 到 N*N 的数字给方格编号,编号 从左下角开始,每一行交替方向。 例如,一块 6 x 6 大小的棋盘,编号如下: r 行 c 列的棋盘,按前…

爬虫必须学会的正则表达式

为什么要学正则表达式 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索)爬 (将所有的网站的内容全部爬下来)取 (去掉对我们没用处的数据)处理数据(按照我们想要的方式存储和使用) 我们在昨天的案例里实际上…

fedora20 安装ror

rvm安装 $ curl -L get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/.bash_profile $ rvm install 2.0.0 测试是否正确 $ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin13.0.0]$ gem -v 2.1.6$ gem source -r https://rubygems.org/ $ gem s…

Python基础(八)--迭代,生成器,装饰器与元类

目录 Python基础(八)--迭代,生成器,装饰器与元类 1 迭代 1.1 可迭代对象与迭代器 1.2 自定义迭代类型 1.3 迭代合体 2 生成器 2.1 什么是生成器 2.2 生成器表达式 2.3 生成器函数 3 装饰器 3.1 闭包 3.2 什么是装饰器 …

XPath和lxml类库

XPath,我们可以先将 HTML文件 转换成 XML文档,然后用 XPath 查找 HTML 节点或元素。 什么是XML XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据&#xf…

Python基础(九)--异常

Python基础(九)--异常 1 异常相关概念 1.1 什么是异常 异常是程序运行过程中产生的一种事件,该事件会打乱程序的正常流程。可以说,异常就是一种意外,指程序没有按照正常或期望的方式执行。 当异常产生时&#xff0…

爬虫工具:虚拟机Selenium和PhantomJS,ChromeDriver 镜像安装教程

虚拟机Ubuntu 16.04中安装: 1.安装Selenium命令:pip install Selenium 2.安装PhantomJS命令:sudo apt install PhantomJS 3.找到Ubuntu中谷歌所对应的的版本号: 看到网上基本没有最新的chromedriver与chrome的对应关系表&#xff…

实施vertex compression所遇到的各种问题和解决办法

关于顶点压缩,好处是可以减少带宽,一定程度提高加载速度,可以提高约5-10%的fps,特别是mobile上,简单描述就是: 压缩之前(32字节) position float3 12normal float3 12texcoord0 float2 8 压缩之后(16字节) …

Python基础(十)--文件相关

目录 Python基础(十)--文件相关 1 读写文件 1.1 获取文件对象 1.2 文件读取 1.3 文件写入 1.4 文件定位 2 文件与路径的操作 2.1 os模块 2.2 os.path模块 2.3 shutil模块 2.4 glob模块 3 序列化 3.1 csv 3.2 json 3.3 pickle 4 上下文管理…

memcache 原理 监测 查看状态 stats 结构

Mencache内存存储方式:slab/LRU,采用预先申请固定大小的内存页(slab/page),然后再把内存分成多个块(chunk) 先放一张从网上找到的memcache内存结构图,觉得非常的赞: 再来一张memcach…

爬虫——多线程糗事百科案例

Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 对于资源,加锁是个重要的环节。因为python原生的list,dict等,都是not thread safe的…

LeetCode 1625. 执行操作后字典序最小的字符串(BFS)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 以及两个整数 a 和 b 。其中,字符串 s 的长度为偶数,且仅由数字 0 到 9 组成。 你可以在 s 上按任意顺序多次执行下面两个操作之一: 累加:将 a 加到 s 中所有下标为奇数的元素…

Python基础(十一)--正则表达式

Python基础(十一)--正则表达式 1 简述 正则表达式可以对指定的字符串与模式之间执行模式匹配。模式可以是普通的字符串,也可以是含有特殊意义字符的字符串。通过正则表达式,我们可以进行查找,校验等。 2 特殊字符 …

C++ 0x 使用可变参数模板类 实现 C# 的委托机制

1 #ifndef _ZTC_DELEGATE_H_2 #define _ZTC_DELEGATE_H_3 4 #include <vector>5 #include <functional>6 7 ///8 // C 使用 可变参数模板类, 来实现9 // C#中的 委托 10 // Anchor: ztc 11 // Date : 2014-01-10 12 /// 13 14 template<typename R, typename …

爬虫技巧:在pycharm 下 调试 scrapy项目

&#xff08;1&#xff09; 用pycharm导入scrapy项目 &#xff08;2&#xff09;选择自己编写的scrapy&#xff0c;run一下 &#xff08;3&#xff09;点击菜单栏的run &#xff0c;选择Edit Configurations。 &#xff08;4&#xff09;选择运行的spider文件 &#xff08;5&am…