|
查看: 1927|回复: 10
|
我的java gui - 更新Calculator, Mine Sweeper
[复制链接]
|
|
|
发表于 10-10-2010 01:23 PM
|
显示全部楼层
不錯噢~ 我還有一段很長的路要走... 
不過我想問那個PasswordFrame有什麽作用?? 空空的.... |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 10-10-2010 01:57 PM
|
显示全部楼层
本帖最后由 qiqimon5566 于 10-10-2010 01:59 PM 编辑
不錯噢~ 我還有一段很長的路要走...
不過我想問那個PasswordFrame有什麽作用?? 空空的....
Jason929 发表于 10-10-2010 01:23 PM 
就是空的 ^.^
例如有时候填东西 都是在main的那面按button
然后跳出另外一个frame再填资料之类的不是吗? xD
在尝试学习做些需要的功能
所以frame那边就懒惰加了 ^^ |
|
|
|
|
|
|
|
|
|
|
发表于 10-10-2010 02:01 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 11-10-2010 10:35 PM
|
显示全部楼层
回复 1# qiqimon5566
楼主我可以给点意见吗?
- 如果你是要弄两个不一样的UI, 你应该用JPanel来弄或者建一个新的class for IdAndPasswordPanel, 一个新的class for MenuPanel, 而不是用JFrame.
E.g
- public JPanel createIdAndPassword()
- {
- JPanel userDetailsPanel = new JPanel();
- ....
- ....
- return userDetailsPanel;
- }
- public JPanel createMenuPanel()
- {
- JPanel menuPanel = new JPanel();
- ....
- ....
- return menuPanel;
- }
复制代码
原因是JFrame不是那样用的,这怎么说呢?一般program只会有一个JFrame,它会有JMenu, status bar 等等, 当你按不同的按钮(button)时, 变的都是Jframe's container而不是Jframe自己。我打个比喻,就拿ppstream 来说,主视窗才一个,你按不同样的戏或者其它按钮,那个主视窗都是一样的,而它的下半段才会变。 - 以下的codes是重复了,
- public static void password(String name){
- if(name.equalsIgnoreCase("ID & Password")){
- Password frame = new Password(name);
- frame.setTitle(name);
- frame.setSize(400, 150);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- else if(name.equalsIgnoreCase("menu")){
- Password frame = new Password(name);
- frame.setTitle(name);
- frame.setSize(400, 150);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- }
复制代码
你改成以下效果都是一样的。
- public static void password(String name){
- Password frame = new Password(name);
- frame.setTitle(name);
- frame.setSize(400, 150);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
复制代码 - 别用这种方式name variables, e.g l1,l2, t1,t2, btn1,btn2, 这是最不好的为名方式。原因是非常难读,没看清楚你也会搞不懂btn2是什么,t2又是什么。你应该把这些为名成 userIdLabel, passwordLabel, userIdField, passwordField, returnButton etc. 这样就一目了然,无需到回头看是什么,也不会弄乱。
- swing default 附带的layout manager都是不好用,如果你要开放swing application, 你应该考虑用 FormLayout(http://www.jgoodies.com/freeware/forms/), 它就好像excel一样非常好用,当然如你要wysiwyg(what you see is what you get) 的工具,你可以考虑用Netbean 的Matisse功能。
- JFame 好像是没有sub frame的concept的,因为它是独立的,也就是说你关了ParentJFrame, 它的sub Jframe 是不会自动关,原因是Jframe是独立的。不过Swing有个叫JInternal Frame, 这可能是你要的。
我讲了很多,希望没把你弄乱,anyway, 加油吧! |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 12-10-2010 01:18 PM
|
显示全部楼层
本帖最后由 qiqimon5566 于 12-10-2010 01:23 PM 编辑
回复 5# 黑木头
谢谢你的建议真的好详细 其实我在学院 讲师刚教gui 可是却是为了 applet jsp jsf servlet而学的basic gui然而gui没真正的动到 所以想自己学看作作
呵呵 真的很感谢你的教学 我现在才明白不应该用JFrame =="
btw 其实我只是想设计出gui 所以那些variable名字都是乱填的 xD
所以我应该用JPanel 来 取代 JFrame?
我的自学能力实在很差 ==
我也是到了昨天才知道原来netbean可以drag and drop gui ==
btw请问什么是Matisse? |
|
|
|
|
|
|
|
|
|
|
发表于 12-10-2010 01:37 PM
|
显示全部楼层
回复 6# qiqimon5566
多看多写就会懂了,比别人努力几倍一定会学会。以前我上学时,我都是自己学的,我不喜欢教我java的老师,觉的她是坤饭吃。
对,你应该用JPanel.
Matisse 是netbean 的 GUI editor 的名字。 |
|
|
|
|
|
|
|
|
|
|
发表于 12-10-2010 02:54 PM
|
显示全部楼层
虽然gui editor很方便,但是希望楼主可以继续学写下去咯(目前不要太依赖gui editor),可以练就一身好功夫哦
对于黑木头大哥说的swing的layout manager不好用,我没有办法赞同,swing提供的是很基本的一套layout,如果layout manager不够用,我们可以自己写啊。不可否认有时候我们只是需要更简易的方法来制作一些form based的GUI,黑木头大哥提议的formlayout就能够加速编写过程了。要了解layout manager的特性和用法,自然没有什么GUI的编排是你做不出来的了。 |
|
|
|
|
|
|
|
|
|
|
发表于 12-10-2010 04:34 PM
|
显示全部楼层
本帖最后由 黑木头 于 12-10-2010 04:40 PM 编辑
回复 8# vxion
看来你对swing的layout manager 应该很熟悉。我觉的swing的layout manager不好用有以下原因:
- 有些layout manager 像GridbagLayout 超难读,就算是一个资深编程员有时都不能确定UI 的布置准确性。
- 布置一个复杂的UI非常费时。像以下的例子:你需要多少时间来布置?
 - 很多swing的layout manager都是用pixel sizes, pixel sizes 最大的问题是当你resize 你的screen, 你的component 是不会跟着resize的。当然有些layout manager 是能做到这点,但因为其复杂性,很少人会去做。
我以前开发的swing app从不用GUI Editor, 那是因为我自己有很多自己开发的component。我的看法是学习时,可以不用GUI Editor, 先让自己了解layout manager 的应用,但如果是开发软件,那应该用GUI Editor。所谓时间就是金钱,你不可能弃用IDE而用notepad开发的你project 吧? |
|
|
|
|
|
|
|
|
|
|
发表于 12-10-2010 05:14 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-10-2010 10:22 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|