正文之前
今天早上起来,因为还要在宿舍这边搞毕业信息确认,所以没办法,我就只能在宿舍里面做一下Java 的GUI的优化了!
很幸运的,思索一番之后,我发现了问题所在,并且很快的就解决了。就在我想要继续水两面毕业设计学生日志的时候,却悲哀的发现我的日志本昨天就上交去中期检查去了!呜呼哀哉!简直悲伤!所以只能先写个电子档,等纸质档发下来再补上了!
正文
在前天完善Java GUI界面的时候,因为时间匆忙,所以只能匆匆赶出来一个示例样板,基本上只能实现决策树最顶端的那几个Line的展示。
而我昨天有个想法,那就是能不能在MouseAndKeyEvent(GUI界面的最终类,名字是随便起的)这个类里面加一个标志数,即line这个变量来确定当前是要展示出来多少行,然后设定一个静态方法,可以在main主函数里面直接读取MouseAndKeyEvent这个类里面的静态变量line,然后根据这个line值是否变化判断是否应该继续传值到MouseAndKeyEvent这个类的实例化对象里面。这里边还有个静态方法专门干这事,其实把这个静态方法定义到哪儿都可以。不过不管了,能用就行。
结果就是,失败了!理所当然的失败了!
根本没法传值,主函数也一直没法结束!我真是苦恼啊!
虽然没想到到底是为了啥,但是在网上浏览了一番,我却想起来!Java GUI的界面都是基于线程存在的,如果主函数要对线程做些什么,基本都是提交一个线程进去。所以我这儿估计是资源冲突???主函数迟迟不结束,线程那边有动静但是还不如没有。
然后我就直接在main里面把整个决策树读取了出来,存储到一个数组里面。然后在MouseAndKeyEvent里面也开了一个数组用于存储着1500左右的决策树输出。然后main顺利结束,其他的都交给了线程。美滋滋~然后我的就可以做到按按钮就可以刷新了,其实也是很大的进步了!
后来,我更是对按钮2,也就是Next按钮进行了一个键盘监听,只要当前聚焦在Next按钮上,那么就可以用Enter按下直接取代按按钮。岂不是美滋滋?不然140行,按140下简直想死!
but2.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
System.out.println(KeyEvent.getKeyText(e.getKeyCode())+" ******>>>> "+e.getKeyCode());
if(e.getKeyCode()==KeyEvent.VK_ENTER){
System.out.println("Put Down the Enter to Change the Data!");
UpdateDisplay();
}
}
});
然后我又遇到了一个问题。很严重!!!
那就是我的Jlabel无法左对齐。我在网上找了很多关于Jlabel左对齐的方案,大部分都是在初始化的时候给定的内容。我也照做了,甚至为此我还有两种方案:一个JLabel.LEFT,一个是SwingConstants.LEFT这个,也就是基于下图的方法:
但是都失败了,还是没什么卵用!
甚至我都到了 一个可能潜藏着巨多大神的地方去咨询。
可惜,还没等大神回复我。。我就突然想到,我的貌似是三层结构啊。
具体的结构我随便画个图!
布局Layout大概就是图中这样的了,既然JLabel无论如何都没啥效果,那么是不是JPanel出问题了呢??抱着这个想法,我搜了搜~还真有答案!
然后我照做了!美滋滋!!真的可以!给你们看看效果~
哇靠,这太靠左边了!不过没毛病!只要能控制,什么是做不到的?填空格我都给你填满咯!
然后我就给每一个输出加了这么一个Space
public static String Space = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
再来看效果!~~~
现在不是美滋滋???简直可以说是6666了好吗?OK!今天到这儿,赶紧写几个命令好让我的GUI逼格高起来!写完就去健身房,然后吃饭,晚上干啥就不清楚了!
正文之后
既然要做文字识别,那就不得不提我很是忌讳的一个东西了,字符串的处理。。CCF考过,简直想死!而且还是那种很简单的我都搞不定,不过我可以规则弄简单点,没那么多弯弯道道不就OK?!!嘿嘿!