单机工具--jframe应用

原创 2016年06月01日 11:35:20

最近看同事写的一个工具很有意思,分享下

public class EncodingPanel extends JPanel {
private static final long serialVersionUID = 1L;


public EncodingPanel() {
super(new GridBagLayout());
initComponent();
}
public static void main(String[] args) {
new EncodingPanel().initComponent();
}


/**
* 初始化控件
*/
private void initComponent() {
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.ipady = 8;
constraints.insets = new Insets(8, 0, 0, 0);
// 输入:
JLabel srcFileLabel = new JLabel("输入:");
constraints.gridwidth = 1;
constraints.weightx = 0;
this.add(srcFileLabel, constraints);
final JComboBox<String> srcEncodeType = new JComboBox<String>(
new String[] { "GBK", "GB2312", "UTF-8", "ISO8859-1" });
constraints.gridwidth = 2;
constraints.weightx = 0;
this.add(srcEncodeType, constraints);
final JButton srcButton = new JButton("请选择输入文件路径");
constraints.gridwidth = 3;
constraints.weightx = 1;
this.add(srcButton, constraints);
srcButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String file = DocParseFrame.chooseFile(JFileChooser.FILES_AND_DIRECTORIES);
if (!file.equals("")) {
srcButton.setText(file);
}
}
});
// 输出:
JLabel targetFileLabel = new JLabel("输出:");
constraints.gridwidth = 1;
constraints.gridy = 1;
constraints.weightx = 0;
this.add(targetFileLabel, constraints);
final JComboBox<String> targetEncodeType = new JComboBox<String>(
new String[] { "GBK", "GB2312", "UTF-8", "ISO8859-1" });
constraints.gridwidth = 2;
constraints.weightx = 0;
constraints.gridy = 1;
this.add(targetEncodeType, constraints);
final JButton targetButton = new JButton("请选择输出文件路径");
constraints.gridwidth = 3;
constraints.gridy = 1;
constraints.weightx = 0;
this.add(targetButton, constraints);
targetButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String file = DocParseFrame.chooseFile(JFileChooser.FILES_AND_DIRECTORIES);
if (!file.equals("")) {
targetButton.setText(file);
}
}
});
// 编码选择


// 转换按钮
final JButton changeButton = new JButton("转换");
constraints.gridwidth = 2;
constraints.gridy = 2;
constraints.weightx = 0;
constraints.insets = new Insets(24, 10, 0, 0);
this.add(changeButton, constraints);
final JLabel progresslabel = new JLabel("");
constraints.gridwidth = 2;
constraints.gridy = 2;
constraints.weightx = 0;
this.add(progresslabel, constraints);


// 错误面板
final JTextArea errTextArea = new JTextArea();
constraints.gridwidth = 6;
constraints.gridy = 3;
constraints.weighty = 20;


constraints.insets = new Insets(10, 0, 10, 0);
this.add(errTextArea, constraints);


changeButton.addActionListener(new ActionListener() {


@Override
public void actionPerformed(ActionEvent e) {
final String inFilePath = srcButton.getText();
final String inCharsetName = srcEncodeType.getSelectedItem().toString();
final String outFilePath = targetButton.getText();
final String outCharsetName = targetEncodeType.getSelectedItem().toString();
if (inFilePath.equals("请选择输入文件路径") || outFilePath.equals("请选择输出文件路径")) {
JOptionPane.showMessageDialog(EncodingPanel.this, "输入参数不正确");
return;
}
changeButton.setEnabled(false);
new Thread() {
public void run() {
try {
new EncodingUtil().recursionFileEncodingTrans(inFilePath, inCharsetName, outFilePath,
outCharsetName, new EncodingUtil.ProgressInterface() {
@Override
public void progress(int index) {
progresslabel.setText("正在处理:第" + index + "个");
}
});
progresslabel.setText("转换完毕");
} catch (Exception e) {
e.printStackTrace();
errTextArea.setText(e.toString());
}finally{
changeButton.setEnabled(true);
}
};
}.start();
}
});
}


}

package com.dinfo.oec.doc.ui;


import java.io.File;


import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;


public class DocParseFrame extends JFrame {
private static final long serialVersionUID = 1L;


public DocParseFrame() {
createJTabbedPane();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100, 100, 400, 400);
this.setVisible(true);
}


public void createJTabbedPane() {
JTabbedPane tabbedPane = new JTabbedPane();
// 1。编码转换
tabbedPane.addTab("编码转换", new EncodingPanel());
// 2.文档解析
tabbedPane.addTab("文档解析", new DocParsePanel());
getContentPane().add(tabbedPane);
}


// 选择文件
public static String chooseFile(int chooseType) {
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(chooseType);
jfc.showDialog(new JLabel(), "选择");
File file = jfc.getSelectedFile();
if (file != null) {
return file.getAbsolutePath();
} else {
return "";
}
}


public static void main(String[] args) {
new DocParseFrame();
}


}

很有意思的东东

Swing 鼠标单击事件

package com.swing.helloword;/* * 简单Swing事件处理程序 * 作者:刘怀帮 * 日期:2010年12月8日 */import java.awt.event.Acti...
  • wwwihpccn
  • wwwihpccn
  • 2010年12月08日 17:07
  • 5757

如何把应用从单机扩展到分布式

本节会学习以下内容: 第一版 单台服务器应用 第二版 应用服务器和数据库服务器分离 第三版 应用服务器集群 第四版 负载均衡器 第五版 数据库服务器集群 第六版 搜索引擎集群 第七版 缓存服务器 ...
  • yp1125
  • yp1125
  • 2018年01月22日 09:29
  • 58

java画图总结之二(常用类Graphics,JFrame,JPanel)

二,常用类 Graphics,JFrame,JPanel     理清一下,画图要用的类,和之间的关系。...
  • tanjun592
  • tanjun592
  • 2017年02月08日 13:21
  • 1489

一个简单的java桌面应用:单机版IFTTT

本项目是由java编写的一款基于触发器-动作框架的IFTTT窗口程序。 用户可以指定this和that事件。当应用监测到this事件发生时,将自动执行that事件。...
  • lijunfan1994
  • lijunfan1994
  • 2015年11月16日 16:06
  • 1971

基于Docker快速搭建单机版Kuberntes

原文地址:http://dockone.io/article/859 基于Docker快速搭建单机版Kuberntes 【编者的话】Google使用容器技术已经长达十年,其在内部...
  • kimqcn4
  • kimqcn4
  • 2016年03月04日 13:32
  • 886

Zookeeper实战之单机模式

Zookeeper介绍Zookeeper 分布式服务框架是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文主要从使用者角度来介绍...
  • kongxx
  • kongxx
  • 2014年11月11日 19:30
  • 7051

hadoop 2.5.2 + hive1.1.0 单机环境安装步骤

环境  - ubuntu server 14.04 - mysql - 第一步 添加hadoop组和用户 1 创建Hadoop用户组 stat@localhost:/usr...
  • FENGQIYUNRAN
  • FENGQIYUNRAN
  • 2015年06月17日 21:15
  • 957

JFrame常用的几个方法

setExtendedState(JFrame.MAXIMIZED_BOTH);//界面显示最大化setUndecorated(true); // 去掉窗口的装饰,删除标题栏getRootPane()...
  • cymyell
  • cymyell
  • 2009年07月18日 11:09
  • 3419

JFrame边框样式

在JDK1.4以前,我们只有一种方式来去掉窗口的标题栏,那就是直接使用JWindow,用JWindow来代替JFrame使用。但用过JWindow的人一定知道,JWindow在操作系统的任务栏是不可见...
  • u010095549
  • u010095549
  • 2014年10月03日 22:55
  • 1541

JPanel与JFrame的区别

honphenc的博客
  • u011847748
  • u011847748
  • 2014年11月13日 10:11
  • 4087
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单机工具--jframe应用
举报原因:
原因补充:

(最多只允许输入30个字)