此代码主要是设计一个小面板,在面板内可以实现字符与ASCII码的相互转换,代码如下:
package cm.test.demo10;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
public class ASCIIChange extends JFrame {
//注意下面这几个你可以理解为是宏定义吧,因为我们在构造方法中创建的一些组件,我们要在其他方法中使用,所以我们就必须把这些组件创建成一个全局的变量
private JTextField LetterText;
private JTextField asciiText;
private JLabel label3;
private JLabel label6;
//构造方法
public ASCIIChange() {
setTitle("十进制的ASCII编码查看器");
setBounds(100, 100, 450, 150);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//创建总容器
Container c=getContentPane(); //为窗体创建一个容器
//创建总面板
JPanel Panel=new JPanel();
Panel.setLayout(new BorderLayout(0,0)); //总面板为一个边界布局,间隔是0
c.add(Panel); //把总面板添加到容器中
//创建一个面板,用于存放两部分内容:字符toASCII码,ASCII码to字符
JPanel Panel1=new JPanel(new GridLayout(2, 1, 5, 5)); //创建一个两行一列网格布局的面板
Panel.add(Panel1,BorderLayout.CENTER); //把面板放于大面板的中央
//创建第一部分:字符toASCII码
JPanel asciiPanel=new JPanel(new GridLayout(1, 5, 5, 5)); //创建一个1行5列的面板
asciiPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); //设置面板边框格式,第一个参数表示浮雕化类型,第二个和第三个参数是设置边框浮雕化的颜色
Panel1.add(asciiPanel);
//创建一个标签,显示“输入字符:”
JLabel jl1=new JLabel("输入字符:");
jl1.setFont(new Font("宋体",Font.PLAIN,15));
asciiPanel.add(jl1);
//创建一个文本框,用于输入字符
LetterText=new JTextField();
LetterText.setColumns(3);
asciiPanel.add(LetterText);
//创建一个标签,显示“转换结果:”
JLabel jl2=new JLabel("转换结果:");
jl2.setFont(new Font("宋体",Font.PLAIN,15));
asciiPanel.add(jl2);
//创建一个标签,用于显示字符toASCII码的转换结果
label3=new JLabel("");
label3.setFont(new Font("宋体",Font.PLAIN,15));
asciiPanel.add(label3);
//创建一个按钮,用于进行字符toASCII码的转换动作
JButton btn1=new JButton("转换");
asciiPanel.add(btn1);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
do_LetterToASCII(e);//调用字符转换成ASCII码的方法
}
});
//创建第二部分:ASCII码to字符
JPanel numberPanel=new JPanel(new GridLayout(1, 5, 5, 5));
numberPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); //设置计算字符的面板的边框
Panel1.add(numberPanel);
//创建一个标签,显示“输入数字:”
JLabel jl3=new JLabel("输入数字:");
jl3.setFont(new Font("宋体",Font.PLAIN,15));
numberPanel.add(jl3);
//创建一个文本框,用于输入数字
asciiText=new JTextField("");
asciiText.setColumns(3);
numberPanel.add(asciiText);
//创建一个标签,显示“转换结果:”
JLabel jl4=new JLabel("转换结果:");
jl4.setFont(new Font("宋体",Font.PLAIN,15));
numberPanel.add(jl4);
//创建一个标签,用于显示ASCII码ToLetter的转换结果
label6=new JLabel("");
label6.setFont(new Font("宋体",Font.PLAIN,15));
numberPanel.add(label6);
//创建一个按钮,用于进行ASCII码to字符的转换动作
JButton btn2=new JButton("转换");
numberPanel.add(btn2);
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
do_ASCIIToLetter(e);//调用ASCII码转换成字符的方法
}
});
}
//这个函数是把字符转换成ASCII码的方法
protected void do_LetterToASCII(ActionEvent e) {
String ascii=LetterText.getText();
if(ascii.length()==1) {
int i=Character.codePointAt(ascii, 0);
label3.setText(""+i);//因为setText方法的参数必须是一个字符串,所以我们必须在i的前面加上一个" ";
}else {
JOptionPane.showMessageDialog(null, "文本框中字符的数量不能超过一个!", "警告", JOptionPane.WARNING_MESSAGE);//弹出Dialog对话窗口,显示警告信息
}
}
//这个函数是把ASCII码转换成字符的方法
protected void do_ASCIIToLetter(ActionEvent e) {
try {
String number=asciiText.getText();
if(Integer.parseInt(number)<=126) {
char a[]=Character.toChars(Integer.parseInt(number));
label6.setText(new String(a));
}else {
JOptionPane.showMessageDialog(null, "十进制编码有效范围0~126", "警告", JOptionPane.WARNING_MESSAGE);//弹出Dialog对话窗口,显示警告信息
}
}catch(Exception e2){
JOptionPane.showMessageDialog(null, "十进制编码有效范围0~126!", "警告", JOptionPane.WARNING_MESSAGE);//弹出Dialog对话窗口,显示警告信息
}
}
//主方法
public static void main(String[] args) {
ASCIIChange frame=new ASCIIChange();
frame.setVisible(true);//在主方法中调用让窗体可见的方法有时候可以防止组件显示不完全问题的出现
}
}
输出结果:
其实这个代码整体思想还是比较简单的,就是在一个窗体中首先创建一个大面板,然后把这个大面板设置成2行1列的网格布局,然后再在这2行1列中再创建两个小面板,然后再把这两个小面板分别都设置成1行5列的网格布局,再在这个1行5列的网格布局中添加我们需要的组件:标签、文本框和按钮。
我们再来学习一下字符与ASC码的相互转化操作:
package cm.test.demo9;
import java.util.Scanner;
public class ASCIIANDLetter {
public static void main(String[] args) {
System.out.println("字符转化成ASCII码:");
System.out.println("请输入一个字符:");
Scanner sc=new Scanner(System.in);
String ch=sc.nextLine();
int i=Character.codePointAt(ch, 0);
System.out.println(ch+"对应的ASCII码值为:"+i);
System.out.println("ASCII码转化成字符:");
System.out.println("请输入一个ASCII码:(输入范围为:0~126)");
String ascii=sc.next();
char ch1[]=Character.toChars(Integer.parseInt(ascii));
System.out.println(ascii+"对应的字符为:"+new String(ch1));
sc.close();
}
}
输出结果:
字符转化成ASCII码:
请输入一个字符:
a
a对应的ASCII码值为:97
ASCII码转化成字符:
请输入一个ASCII码:(输入范围为:0~126)
67
67对应的字符为:C