⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpsctoolkit.java

📁 用于串口通讯测试的工具软件。完全使用java语言编写。
💻 JAVA
字号:
package com.zcsoft.jpsc.gui;

import java.util.*;
import javax.swing.*;
import com.zcsoft.swing.ComboItem;
/**
 * <p>Title: 串口通信</p>
 * <p>Description: 串口通信实验</p>
 * <p>Copyright: Copyright (c) 2004-2005</p>
 * <p>Company: Zhicheng Software&Service Co. Ltd.</p>
 * @author 蒋智湘
 * @version 1.0
 */
/** 工具箱 */
public class JpscToolkit
{
	static ResourceBundle res = ResourceBundle.getBundle("com.zcsoft.jpsc.resource.Res");

	private JpscToolkit(){}

	public static JComboBox createFormatCompnent()
	{
		return new JComboBox(new Object[]{
									new ComboItem(new Integer(16), res.getString("format.hex")),
									new ComboItem(new Integer(Character.MIN_RADIX - 1), res.getString("format.character")),
									new ComboItem(new Integer(10), res.getString("format.decimal"))});
	}

	private static boolean isCharFormat(int radix)
	{
		return radix < Character.MIN_RADIX;
	}

	/**
	 * 获取电报数据格式下拉框中当前选择格式对应的进制。
	 * @param formatCombox 提供给用户选择的数据格式
	 */
	public static int getRadixForSelectedFormat(JComboBox formatCombox)
	{
		return getRadixForItem(formatCombox.getSelectedItem());
	}

	/**
	 * 获取电报数据格式下拉框中指定选择项对应的进制。
	 * @param formatItem 提供给用户选择的数据格式中某一个
	 */
	public static int getRadixForItem(Object formatItem)
	{
		return ((Integer)((ComboItem)formatItem).getId()).intValue();
	}

	/**
	 * 将用户输入的电报按照指定数据格式转换成数字
	 * @param telegram 电报字节的字符串表示
	 * @param radix 上述字符串表示所采用的进制
	 * @return 电报内容的原始字节
	 */
	public static byte[] byteArrayOfTelegram(String telegram, int radix) throws NumberFormatException
	{
		if (isCharFormat(radix))
		{
			return telegram.getBytes();
		}
		return byteArrayOfString(telegram, radix);
	}

	/**
	 * 指定数据格式下,电报内容的字节个数
	 * @param telegram 电报内容的字符串表示
	 * @param radix 字符串表示所使用的数据格式
	 * @return 电报原始字节的长度
	 */
	public static int telegramLength(String telegram, Object format)
	{
		if (isCharFormat(JpscToolkit.getRadixForItem(format)))
		{
			return telegram.length();
		}
		else
		{
			return new StringTokenizer(telegram).countTokens();
		}
	}

	/**
	 * 将以空格分隔的多个字节值构建成一个自己数组。
	 * @param s 包含多个字节值的字符串。
	 * @param radix 表示这些字节值的字符串所使用的进制(>2)。
	 * @return
	 * @throws NumberFormatException 空格分隔的字符串记号不可以按指定进制转换成字节值
	 */
	private static byte[] byteArrayOfString(String s, int radix) throws NumberFormatException
	{
		StringTokenizer st = new StringTokenizer(s);
		byte[] terminalBytes  = new byte[st.countTokens()];
		int i = 0;
		while (st.hasMoreTokens())
		{
			terminalBytes[i ++] = Byte.parseByte(st.nextToken(), radix);
		}
		return terminalBytes;
	}

	/**
	 * 用限定的进制表示规定区域内的字节值,并将这些字节封装成字符串后返回
	 * @param message 包含了待转换字节值的字节数组
	 * @param offset 待转换的字节从此位置开始
	 * @param length 从offset开始,length字节需要转换
	 * @param radix 各个字节的值表示成该进制下的字符串
	 * @return
	 */
	public static String toString(byte[] message, int offset, int length, int radix)
	{
		if (isCharFormat(radix))
		{
			return new String(message, offset, length);
		}
		StringBuffer returnedString = new StringBuffer(length * 3);
		for (int n = offset + length; offset < n; offset++)
		{
			returnedString.append(Integer.toString(message[offset], radix));
			returnedString.append(' ');
		}
		return returnedString.toString();
	}


	/**
	 * 创建一个JLabel组件,并设定给组件显示的助记符,同时设定它为指定的组件提供焦点获取服务
	 * @param labelTextKey JLabel组件的文本在资源中
	 * @param c 待创建组件提供组件c的焦点获取服务
	 * @return
	 */
	public static JLabel createLabelForComp(String labelTextKey, java.awt.Component c)
	{
		String caption = res.getString(labelTextKey);
		int[] mnemonic = new int[1];
		JLabel lbl = new JLabel(com.zcsoft.swing.ZCAction.getNameFrom(caption, mnemonic));
		lbl.setDisplayedMnemonic(mnemonic[0]);
		lbl.setLabelFor(c);
		return lbl;
	}

	/**
	 * 根据按钮文本对应的资源键,设置按钮文本和助记符
	 * @param cmd 按钮实例
	 * @param captionKey 资源文件中按钮上文本对应的查找键
	 */
	public static void setCommandPropterties(AbstractButton cmd, String captionKey)
	{
		String caption = res.getString(captionKey + ".caption");
		int[] mnemonic = new int[1];
		cmd.setText(com.zcsoft.swing.ZCAction.getNameFrom(caption, mnemonic));
		cmd.setMnemonic(mnemonic[0]);
	}

	/**
	 * 显示消息对话框
	 * @param parent
	 * @param message
	 */
	public static void showMessageDialog(java.awt.Component parent, Object message)
	{
		JOptionPane.showMessageDialog(parent,
												message,
												res.getString("message.dialog.title"),
												JOptionPane.INFORMATION_MESSAGE);
	}


	/** 获取字符串映射资源表 */
	public static ResourceBundle getStringResourceBundle()
	{
		return res;
	}

	/**
	 * 将x,y,width,height字符串封装成Rectangle对象后返回
	 * @param xywh 有逗号分隔的,依次表示Rectangle实例的x、y、width和height属性值的字符串。
	 *    x、y、width、height各值都是整数
	 * @return Rectangle实例。如果xywh为null,或者示其它非法格式的
	 */
	public static java.awt.Rectangle rectValue(String xywh)
	{
		java.awt.Rectangle rect = null;
		if (xywh == null)
		{
			return rect;
		}
		StringTokenizer st = new StringTokenizer(xywh, ", ");
		if (st.countTokens() == 4)
		{
			rect = new java.awt.Rectangle();
			try
			{
				rect.x = Integer.parseInt(st.nextToken());
				rect.y = Integer.parseInt(st.nextToken());
				rect.width = Integer.parseInt(st.nextToken());
				rect.height = Integer.parseInt(st.nextToken());
			}
			catch (NumberFormatException ex)
			{
				return null;
			}
		}
		return rect;
	}

	/**
	 * 将Rectangle实例的各个属性值转换成字符串表示
	 * @param rect Rectangle实例
	 * @return 如果rect为null,则返回null,
	 * 否则返回rect.x + "," + rect.y + "," + rect.width + "," + rect.height。
	 */
	public static String stringValue(java.awt.Rectangle rect)
	{
		if (rect == null)
		{
			return null;
		}
		return rect.x + "," + rect.y + "," + rect.width + "," + rect.height;
	}

	/**
	 * 判定指定的字符串是否为真值
	 * 参考Boolean.valueOf(String)实现
	 */
	public static boolean booleanValue(String s)
	{
		return Boolean.valueOf(s).booleanValue();
	}

	/**
	 * 将布尔值转换成人性化的字符串
	 * 参考Boolean.toString()实现
	 */
	public static String stringValue(boolean b)
	{
		return (b?Boolean.TRUE:Boolean.FALSE).toString();
	}

	public static String getFormatedString(String key, Object arg)
	{
		String value = res.getString(key);
		Object[] args = arg instanceof Object[]?(Object[])arg:new Object[]{arg};
		Object nonNullArgs[] = args;
		for (int i=0; i<args.length; i++)
		{
			if (args[i] == null)
			{
				if (nonNullArgs==args)
					nonNullArgs=(Object[])args.clone();
				nonNullArgs[i] = "null";
			}
		}
		return java.text.MessageFormat.format(value, nonNullArgs);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -