疯狂java讲义第七章补充习题第17题答案

17、使用Java国际化
先把前面Prosperties练习一下。这里会用到。ok了
用maven构建,把类分开,模块化的写。
国际化+打包jar包+界面(只需要一个frame和一个label就好了),双击运行查看结果,然后修改控制面板中的语言环境(需要升级电脑版本,改用输入参数的方式),再双击查看结果。
或者通过args输入参数构建Localel

maven传入命令行参数(这篇博客里:Maven:如何从命令行传递参数运行.java文件)
疯狂java讲义第七章补充习题第17题答案_第1张图片
要尝试使用Logger了,不然设置日志太麻烦了,要一个个注释掉。。。

结合下面的MessageFormat,练习,就是添加一个可以输入用户名的框框,和一个按钮,就显示你好,用户名。今天是星期几。然后做一个图标,根据使用的地区不同而更换旗帜。

在练习中使用Logger来设置日志,

使用日期国际化完善程序。

效果:
疯狂java讲义第七章补充习题第17题答案_第2张图片

有Logger的简单运用

package internation;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;
import java.util.logging.*;
import java.io.*;
import static java.text.DateFormat.*;
public class Main 
{
	public static void main(String[] args) throws IOException
	{
		JFrame frame = new JFrame("国际化测试");
		
		JPanel panel1 = new JPanel();
		JLabel name = new JLabel("请输入你的姓名:");
		JTextField edit = new JTextField(30);
		panel1.add(name);
		panel1.add(edit);
		frame.add(panel1,BorderLayout.NORTH);

		JPanel panel2 = new JPanel();
		JLabel show = new JLabel("这里是展示部分");
		panel2.add(show);

		//使用java9新增的日志api
		System.Logger logger = System.getLogger("fkjava");
		Logger.getLogger("fkjava").setLevel(Level.FINE);
		Logger.getLogger("fkjava").addHandler(new FileHandler("a.xml"));

		//这里是业务逻辑
		//首先,根据命令行参数获取的国家/语言环境
		Locale myLocale = null;
		String nation = "";
		if(args.length!=0)
		{
			nation = args[0];
			//System.out.println("国家:"+nation);
			logger.log(System.Logger.Level.DEBUG,"国家:"+nation);
		}
		if(nation.equals("china"))
		{
			myLocale = Locale.CHINA;
			Icon icon = new ImageIcon("E:\\maven\\MVN\\project\\internation\\src\\main\\resources\\China.png");
			JLabel picture = new JLabel(icon,JLabel.CENTER);
			panel2.add(picture);
			
		}
		else if( nation.equals("english"))
		{
			myLocale = Locale.US;
			//System.out.println("选择了正确的国家");
			logger.log(System.Logger.Level.DEBUG,"选择了正确的国家");
			Icon icon = new ImageIcon("E:\\maven\\MVN\\project\\internation\\src\\main\\resources\\us.png");
			JLabel picture = new JLabel(icon,JLabel.CENTER);
			panel2.add(picture);
		}
		else
		{
			myLocale = Locale.getDefault(Locale.Category.FORMAT);
			
		}
		final ResourceBundle bundle =ResourceBundle.getBundle("internation",myLocale);
		name.setText(bundle.getString("name"));
		show.setText(bundle.getString("show"));
		frame.setTitle(bundle.getString("frame"));
		frame.add(panel2);

		//到这里为止		
		JButton btn = new JButton(bundle.getString("btn"));
		
		frame.add(btn,BorderLayout.SOUTH);
		
		//国际化日期
		DateFormat df = DateFormat.getDateInstance(FULL,myLocale);
		Action yes = new AbstractAction()
		{
			public void actionPerformed(ActionEvent e)
			{
				String msg = bundle.getString("hello");
				
				show.setText(MessageFormat.format(msg,edit.getText(),df.format(new Date())));

			}
		};
		btn.addActionListener(yes);

		frame.setSize(800,600);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

你可能感兴趣的:(笔记,java,maven,jar)