心血来潮,重新学习swing,自己写了一个中文转unicode的小工具,在此贴出代码与大家分享,
下面先是效果图.
不善文字表达,直接贴代码了,把我想写的东西都写进代码注释里面了.绿色部分就是了
package org.sluggard.swing;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import org.sluggard.common.UnicodeCommon;
/**
* 一个gbk转unicode的小工具
* @author Frank
* @version 1.0
*
*/
/*
* 绿色部分的注释是为了发博客所写.
*
*/
public class GBK2Unicode {
/*
* 先把整个界面需要的元素声明好
*/
private JFrame frame;
private JLabel inputLabel;
private JLabel outputLabel;
private JTextField inputText;
private JTextField outputText;
private Container contentPane;
private JButton button;
/*
* 用来把整个fram显示出来的方法
*/
private void go(){
frame.setVisible(true);
}
public GBK2Unicode() {
/*
* Jframe的这个构造器,传入的string会成为frame的title
*/
frame = new JFrame("GBK2Unicode");
/*
* 这个方法是个frame设置默认的关闭方法,就是右上角的x.
*/
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
view();
}
public void view(){
contentPane = frame.getContentPane();
/*
* 我觉得layout是swing中的关键,整个界面开发的学习过程基本上就是layout的学习过程
* 这个layout我在api中找了好久,最终用这个基本实现了所需的布局.
*/
GridBagLayout gbl=new GridBagLayout();
/*
* 这个layout还有自己的管理器
*/
GridBagConstraints gbc=new GridBagConstraints();
/*
* 这行是从示例代码中抄来的,api解释是
* GridBagConstraints.fill:当组件的显示区域大于它所请求的显示区域的大小时使用此字段。
* 我不是很理解,但是没有这句,整个界面就乱了.
*/
gbc.fill= GridBagConstraints.BOTH;
contentPane.setLayout(gbl);
inputLabel = new JLabel("输入");
inputText = new JTextField(30);
button = new JButton("提交");
/*
* 这行是可以省略的,默认值就是这个
*/
gbc.weightx=GridBagConstraints.BOTH;
/*
* 把定义好的Component通过layout加入frame的方法.具体自己看代码
*/
make(gbl, inputLabel, gbc);
make(gbl, inputText, gbc);
/*
* 这句是关键,把下一个组件设置为这一行的最后一个组件,类似println(),
* 因为写惯了html,总是习惯在行尾加<br/>来进行换行,
* 这种在最后一个组件之前换行的方式让我有些费解,
* 我觉得在行尾提供一个api操作会更好.
*/
gbc.gridwidth= GridBagConstraints.REMAINDER;
make(gbl, button, gbc);
outputLabel = new JLabel("输出");
outputText = new JTextField();
/*
* 因为之前设置了换行,现在还得设置回来
*/
gbc.gridwidth = 1;
make(gbl, outputLabel, gbc);
make(gbl, outputText, gbc);
/*
* 组件设置完毕了~这里就是程序逻辑了~
* 很简单,掉另外一个方法把input的内容转成unicode,
* 然后set到output里面去
*/
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
outputText.setText(UnicodeCommon.GBK2Unicode(inputText.getText()));
}
});
/*
* 增加了一个键盘事件,就是回车就相当于点击提交按钮.
* 在这里我犯了一个错误,看了api以后,我实现了keyTyped(KeyEvent e)方法,
* 因为api的说明是:键入某个键时调用此方法。
* 但是怎么调试都不成功,后来Google,才知道要实现keyPressed(KeyEvent e)方法,
* 具体为什么,不知道了.
*/
inputText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
button.doClick();
}
}
});
/*
* 初始化方法,会自动调整大小
*/
frame.pack();
}
/**
* 把Component通过GridBagLayout加入到Frame的Container中
* @param gbl
* @param c
* @param gbc
*/
private void make(GridBagLayout gbl,Component c,GridBagConstraints gbc){
gbl.setConstraints(c,gbc);
contentPane.add(c);
}
public static void main(String args[]){
new GBK2Unicode().go();
}
}
javaeye居然没有把双*注释和单*注释区分开来~将就看吧~我还想找一个方法把初始化后的窗体大小固定下来,但是没有找到方法~
最后补上jar包,我用一个小工具把它变成了exe文件,方便大家执行.
ps上传zip包的时候,发现je在Chrome下上传zip文件有问题~
- 大小: 14.8 KB
分享到:
相关推荐
90个java-swing基础例子.zip
spring+swing的例子 自己看资料写了个
swing编程小例子 这里有好几个swing编程小例子 希望大家喜欢
一个简单的Swing小例子,主要演示从文件中载入文本 包括: 1.自己编写的MyCurveManagementSystem.java,可以载入文本文件。 载入小文本文件没有问题,但是载入较大(90MB)的文本文件,界面就会失去响应 2....
外网下的,还是可以的。对于初学者有用。其实,swing的GUI方式和C#感觉差不太多。英文的,不过很容易理解
包含了大量有意思的例子,不适合高手人群 都可以编译通过,不是很复杂的源代码
swing小例子,可以实现一个比较漂亮的布局,可以试试哦
Java中Swing界面库中几个类使用的例子,The Java Swing interface library classes use example
sun公司关于swing的所有小例子,在官网直接下载整理。
详细的例子显示java swing的例子,值得一看
java swing gui 例子 学习swing的好工具
丰富强大的swing 例子,包括多行ToolTip,多行树,以及Table等。
用swing程序写的一个小小的刻度表实现的例子。
java SE swing例子程序,使用java swing技术,编写的一个窗口程序,值得学习一下
NULL 博文链接:https://zjmfeeling.iteye.com/blog/2106175
导入eclipse即可打开使用,涵盖了swing图形界面、DAO设计模式,是初学者参考的好材料
这是一些关于swing的经典例子,和大家共同分享
swing连连看例子,源自iteye,版权为原作者所有,仅共享学习 对于初学swing的同学还是很有启发的。不妨下一个学习一下
关于Swing的一些常用的组件的,用一个总程序实现了各个组件的小例子,用视图与代码同时能切换。