一个进制转换的swing,改了下
来源:互联网 发布:pc端网络电视 编辑:程序博客网 时间:2024/05/18 02:00
package test;
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
//import javax.swing.event.DocumentEvent;
//程序放在一个文件中,只有一个类
public class Computer extends JFrame implements KeyListener, ActionListener // 需要用到文本监听器、动作监听器
{
public static final long serialVersionUID = 1L;
// 声明控件与变量
private int temp; // 数值转换的中间变量
private boolean flag = false;// 按钮标志位
private JPanel panel; // 一个panel容器
private JButton changeButton; // 声明转换按钮
private JLabel[] title = new JLabel[4]; // label组
private JTextField[] value = new JTextField[4]; // 文本框组
// 构造
public Computer() {
super("Java程序设计"); // JFrame参数
init();
}
private void init() {
Container content = getContentPane(); // 容器对象声明
content.setLayout(null); // 布局为空
panel = new JPanel(null); // panel定义
panel.setBounds(new Rectangle(0, 0, 300, 350));// 定义panel显示区域
panel.setBorder(BorderFactory.createTitledBorder("进制转换器")); // panel标题
title[0] = new JLabel("二进制");// label
title[1] = new JLabel("八进制");
title[2] = new JLabel("十进制");
title[3] = new JLabel("十六进制");
for (int i = 0; i < title.length; i++) {
title[i].setBounds(new Rectangle(10, 20 + i * 60, 70, 35));
}
for (int i = 0; i < value.length; i++) {
value[i] = new JTextField(20);
value[i].setBounds(new Rectangle(80, 20 + i * 60, 180, 25));
value[i].addKeyListener(this);
}
changeButton = new JButton("转换");// 转换纽
changeButton.setBounds(new Rectangle(60, 260, 210, 25));
changeButton.addActionListener(this);
for (int i = 0; i < title.length; i++)
// 向panel添加控件
panel.add(title[i]);
for (int i = 0; i < value.length; i++)
panel.add(value[i]);
panel.add(changeButton);
content.add(panel); // 向content中添加panel
setSize(300, 350); // 窗口大小
this.setLocationRelativeTo(null); // 居中
setResizable(false);// 禁止改变窗口大小
setVisible(true); // 显示
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if (e.getSource() == value[0]) {
clearOthers(0);
} else if (e.getSource() == value[1]) {
clearOthers(1);
} else if (e.getSource() == value[2]) {
clearOthers(2);
} else if (e.getSource() == value[3]) {
clearOthers(3);
}
}
public void keyReleased(KeyEvent e) {
if (value[0].getText().length() != 0) { // 由于四个文本框监听后动作不同,所以要分别识别出每个文本框的改变
try {
temp = Integer.parseInt(value[0].getText(), 2); // 二转十函数
clearOthers(0);
flag = true;
} catch (NumberFormatException ee) {
JOptionPane.showMessageDialog(null, "输入数据不合法", "信息提示",
JOptionPane.PLAIN_MESSAGE);
clearAll();
}
} else if (value[1].getText().length() != 0) {
try {
temp = Integer.parseInt(value[1].getText(), 8);// 八转十函数
clearOthers(1);
flag = true;
} catch (NumberFormatException ee) {
JOptionPane.showMessageDialog(null, "输入数据不合法", "信息提示",
JOptionPane.PLAIN_MESSAGE);
clearAll();
}
} else if (value[2].getText().length() != 0) {
try {
temp = Integer.parseInt(value[2].getText());// 字符串转int函数
clearOthers(2);
flag = true;
} catch (NumberFormatException ee) {
JOptionPane.showMessageDialog(null, "输入数据不合法", "信息提示",
JOptionPane.PLAIN_MESSAGE);
clearAll();
}
} else if (value[3].getText().length() != 0) {
try {
temp = Integer.parseInt(value[3].getText(),16);// 十六转十函数
clearOthers(3);
flag = true;
} catch (NumberFormatException ee) {
JOptionPane.showMessageDialog(null, "输入数据不合法", "信息提示",
JOptionPane.PLAIN_MESSAGE);
clearAll();
}
}
}
private void clearAll() {
for (int i = 0; i < value.length; i++) {
value[i].setText("");
}
}
private void clearOthers(int t) {
for (int i = 0; i < value.length; i++) {
if (i != t) {
value[i].setText("");
}
}
}
public void actionPerformed(ActionEvent e)// 按钮监听动作后实现
{
if (e.getSource() == changeButton) {
if (flag) {
value[0].setText(Integer.toBinaryString(temp)); // 十转二函数
value[1].setText(Integer.toOctalString(temp));// 十转八函数
value[2].setText(Integer.toString(temp));// int转字符串函数
value[3].setText(Integer.toHexString(temp)); // 十转十六函数
flag = false;
changeButton.setText("清空");
} else if (!flag)// 清空
{
for (int i = 0; i < 4; i++)
value[i].setText("");
temp = 0;
changeButton.setText("转换");
}
}
}
public static void main(String[] args) {
Computer cr = new Computer();// 构造后,产生窗口
cr.addWindowListener(new WindowAdapter()// 关闭按钮响应
{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
- 一个进制转换的swing,改了下
- 关于一个java 进制转换的swing
- swing下使用JFreeChat的一个例子
- 一个改了版的约瑟夫
- 从网上down的一个C# SqlHelper类,自己改了下。挺好用
- 改了一个标题
- 写了一个简单的带有CheckBox的Tree[Swing]
- 完成了一个小Swing应用程序的小小总结
- 稍微改了改网上的一个ASP+XML的简易留言本
- java Swing JList的操作,增删改查都全了,JList与XML转换
- onething-diancan Java swing点餐系统 花1-2周时间认识swing从别人的项目下改一下
- 一个在命令行下改注册表权限的小工具
- 之前收藏了一个动态循环队列的代码,不太好用,改了改,留着备用
- 收集C#常用类:产生一个验证码,改了下
- poj2251的代码又改了改~
- 一个SWING的怪问题
- 一个简单的Swing程序
- 一个php分页函数,自己稍改了改
- 咋把"06May09"搞到"yyyy-MM-dd"
- 咋下载网上的文件??
- 咋取邮件信息?
- 咋取baidu首页的内容?或其他链接的html
- swing的个日期控件,不懂,抄了再说
- 一个进制转换的swing,改了下
- 某大学生的作业(1)--题目
- 某大学生的作业(2)--第一次回复
- 某大学生的作业(3)--第一次回复之要求修改
- find命令实例
- 122
- 开篇之作: 千里之路,马上开始
- apache2+mysql5+php5+gd安装
- return函数与exit函数的总结