swing编程——逻辑顺序很重要

2 篇文章 0 订阅
1 篇文章 0 订阅

初学Java GUI部分,最近在写个小游戏熟悉各种用法,所谓活学活用,真是如此,看书时很多东西都一看就懂,但是真到实战应用的时候,即使是很简单的功能,都够自己喝一壶的了~这次就是想实现个保存游戏进度的功能,很显然需要序列化保存的知识,通过搜索知道需要利用JFileChooser类来保存游戏文件到指定文件夹下,可是弹出的对话框是这样的:没有给出默认文件名
看着很不舒服呐,自己用过很多软件另存为功能时都会给个默认文件名(通常都带有创建的时间),就像下面这样:瞧,这个是带默认文件名的,就酱紫啊
然后自己继续搜索方法,查到了两种解决方案:
1,JFileChooser里的setSelectedFile这个方法
2,获取对话框中JTextField的自定义方法,代码如下:

public JTextField getTextField(Container c) {
     JTextField textField = null;
        for (int i = 0; i < c.getComponentCount(); i++) {
            Component cnt = c.getComponent(i);
            if (cnt instanceof JTextField) {
                return (JTextField) cnt;
            }
            if (cnt instanceof Container) {
                textField = getTextField((Container) cnt);
                if (textField != null) {
                    return textField;
                }
            }
        }
        return textField;
    } 

这篇文章现只针对第一种方法,更简洁易学易用。自己使用后还是不行,几近崩溃边缘,最终经过多番查改查得原因,原来是自己逻辑顺序搞错了!设定默认文件应该在显示出保存对话框之前啊!不然你都显示出来了,设定的还有什么意义呢???给谁看,给JVM看,给内存看吗?哈哈,自己现在回想当时是多么愚蠢啊~

jFileChooser.setSelectedFile(new File(getDefaultFileName()));
jFileChooser.showSaveDialog(jFileChooser);

回想之前写GUI这块代码也有很多因为不注重逻辑顺序而导致程序运行不对的情况,比如1⃣️先设置外组件如JFrame的布局管理器,再向其中添加元素(JButton、JPanel等);参考事例如下:

    myFrame.setLayout(null);
    myFrame.setBounds(300,100, Game.WIDTH + 50, Game.HEIGHT+100) ;
    myFrame.setVisible(true);
    myFrame.setResizable(false);                
    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myPanel.setLocation(panelXPosition, panelYPosition);
    myPanel.setSize(Game.WIDTH + 20, Game.HEIGHT + 20);

2⃣️先加元素,再对加入的元素设置位置和大小!不然你设置的位置和大小都没意义了~

第一次正式发表Java学习分享经验,如果各位能从我的经历中学到获得启发,那将是我最大的幸福!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值