佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1927|回复: 10

我的java gui - 更新Calculator, Mine Sweeper

[复制链接]
发表于 10-10-2010 10:04 AM | 显示全部楼层 |阅读模式
本帖最后由 qiqimon5566 于 17-10-2010 12:12 PM 编辑

这是自学的 说实在的 计算机什么的 有什么运算程式 真的不知道 >.<"
gui 是用 netbeans generate出来的xD






jar file在mediafire ^^

calculator
http://www.mediafire.com/?kq6gva2xursk8bk
mine sweeper
http://www.mediafire.com/?wke8exo54z6wpzm

拜托给些意见 xD
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
可以贴图吗?很懒去compile和读code
回复

使用道具 举报

发表于 11-10-2010 10:35 PM | 显示全部楼层
回复 1# qiqimon5566


  楼主我可以给点意见吗?


  • 如果你是要弄两个不一样的UI, 你应该用JPanel来弄或者建一个新的class for IdAndPasswordPanel, 一个新的class for MenuPanel, 而不是用JFrame.

    E.g
    1. public JPanel createIdAndPassword()
    2. {
    3. JPanel userDetailsPanel = new JPanel();
    4. ....
    5. ....
    6. return userDetailsPanel;
    7. }

    8. public JPanel createMenuPanel()
    9. {
    10. JPanel menuPanel = new JPanel();

    11. ....
    12. ....

    13. return menuPanel;
    14. }
    复制代码


    原因是JFrame不是那样用的,这怎么说呢?一般program只会有一个JFrame,它会有JMenu, status bar 等等, 当你按不同的按钮(button)时, 变的都是Jframe's container而不是Jframe自己。我打个比喻,就拿ppstream 来说,主视窗才一个,你按不同样的戏或者其它按钮,那个主视窗都是一样的,而它的下半段才会变。
  • 以下的codes是重复了,

    1. public static void password(String name){
    2.         if(name.equalsIgnoreCase("ID & Password")){
    3.             Password frame = new Password(name);
    4.             frame.setTitle(name);
    5.             frame.setSize(400, 150);
    6.             frame.setLocationRelativeTo(null);
    7.             frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    8.             frame.setVisible(true);
    9.         }
    10.         else if(name.equalsIgnoreCase("menu")){
    11.             Password frame = new Password(name);
    12.             frame.setTitle(name);
    13.             frame.setSize(400, 150);
    14.             frame.setLocationRelativeTo(null);
    15.             frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    16.             frame.setVisible(true);
    17.         }
    18.     }
    复制代码


    你改成以下效果都是一样的。

    1.     public static void password(String name){      
    2.             Password frame = new Password(name);
    3.             frame.setTitle(name);
    4.             frame.setSize(400, 150);
    5.             frame.setLocationRelativeTo(null);
    6.             frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    7.             frame.setVisible(true);
    8.     }
    复制代码
  • 别用这种方式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?
回复

使用道具 举报

Follow Us
发表于 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的编排是你做不出来的了。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
对于gridbaglayout的看法,跟你一致哈哈

我只是鼓励楼主不要依赖gui editor继续学下去啦,很多人都是这样练过来的啦,结果现在我还不是爱netbean爱到疯
回复

使用道具 举报

 楼主| 发表于 17-10-2010 10:22 PM | 显示全部楼层
什么是gridbaglayout @@?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 18-11-2025 04:38 PM , Processed in 0.120605 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表