作者yichen (苍穹之下任我行)
看板java
标题Re: [问题] 写好的swing在不同OS下跑的问题
时间Mon Oct 26 13:35:30 2015
※ 引述《defsrisars (阿转)》之铭言:
: 标题: [J2SE] 写好的swing在不同OS下跑的问题
: 时间: Sat Oct 24 20:58:15 2015
:
: 如题
: 小的最近刚学swing
: 在macbook上用eclipse写了一个很阳春的通讯录
: jdk版本跟windows的桌电一样是 8u65 64bit
: 只是选的OS不同
:
: 但是写完以後在macbook跑一切正常
: 如图
: http://i.imgur.com/j1cEo13.jpg
:
: 但是同样的原始档或是.jar移到windows都是这样
:
: http://i.imgur.com/UOph2m7.jpg
:
: 我用的元件都是很一般的JButton之类的东西
: 也有尝试加repaint之类的程式码
:
: 请问有人有概念这会是啥摸问题吗
: 感激不尽QQ
:
: ---
: 附上程式码给大家参考好了QQ
: 我对问题出在哪整个没什麽概念..
: Java可携性高 而且是跑在JVM 我的JDK版本也是相同的
: 跑在Windows和MAC上的程式码也是一模一样的
: 不知道问题是出在程式码.compiler还是哪里QQ
: Main
: http://pastie.org/10502060
: FrameInitialize
: http://pastie.org/10502064
: ButtonListener
: http://pastie.org/10502077
: BtnAddLis
: http://pastie.org/10502055
:
: 谢谢大家
: --
: ※ 编辑: defsrisars (1.165.77.155), 10/25/2015 17:06:46
: 推 yichen: http://pastie.org/10502055#32 把这行setVisible移到最下 10/25 18:11
: → yichen: 面加完所有panel之後试试看 10/25 18:12
: 天啊...可以了!!!
: 感觉是很基本的东西...
: 可以请问原理大概是什麽吗QQ
: 我目前只能想像是因为他在setVisible(true)的时候绘画
: 可是为什麽mac可以 windows却会被这个影响呀
: 原来setVisible写在最後面那麽重要...
在setVisible之後, JFrame就认为已经处理好画面上的东西,所以除非当画面需要重画
例如视窗被拉大缩小,呼叫pack(), validate()等, JFrame不见得会主动重画, 就算是新加物件
进去也一样.
这个也不是mac就可以, windows就会被影响, 而是根本不能确认JFrame什麽时候会重画
所以其实mac上是运气好, windows上在执行的顺序或是视窗刚好触发要JFrame重画的时候
可能windows上的画面也会看起来OK
:
: 另外想请问
: 虽然元件都看的见了
: 可是TextArea却无法输入
: 我有试过在最下面加setVisible跟setEditable都还是无法
: 可以请问一下这个应该怎麽修吗QQ
: 谢谢~~
:
: 谢谢您的提点!!
简单的来说, 你没有足够的空间让JTextPane去显示
看到的结果:
http://i.imgur.com/33Cp9Mf.png
视窗拉大之後:
http://i.imgur.com/LNYBsyn.png
视窗拉宽之後:
http://i.imgur.com/yzBFkpC.png
另外, 如果只是要取得单行字串, 用JTextField就可以了, 杀鸡不需要用牛刀
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.244.41.5
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1445837732.A.5E1.html
1F:推 defsrisars: 谢谢您的解释!我真的懂了~~ 10/28 08:55
2F:推 defsrisars: 不过我觉得在很多地方我都只是大概知道每个指令的用法 10/28 08:59
3F:→ defsrisars: ,而不知道其背後绘图的原理和机制 10/28 08:59
4F:→ defsrisars: 谢谢您花时间看我的程式为我解答 10/28 09:00