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

📄 messagetable.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
					else if( ltoken.equals("time") )						entry.type = TYPE_TIME;					else if( ltoken.equals("counter") )						entry.type = TYPE_COUNTER;					else if( ltoken.equals("omit") )						entry.modifier |= MODIFIER_OMIT;					else if( ltoken.equals("unique") )						entry.modifier |= MODIFIER_UNIQUE;					else if( ltoken.equals("const") )						entry.modifier |= MODIFIER_OMIT | MODIFIER_CONST;					else					{						errorText.setText("unknown type or modifier: " + token);						break;					}				}				else if( ltoken.equals("=") && tokens.hasMoreTokens() )					entry.defValue = tokens.nextToken();				else if( entry.title == null )					entry.title = token;				else				{					errorText.setText("extra token found: " + token);					break;				}			}			addEntry(entry);		}		void updateUniqueEntries()		{			int size = 0;			for(int i = 0; i < entries.size(); ++i)			{				Entry entry = (Entry)entries.get(i);				if( (entry.modifier & MODIFIER_UNIQUE) != 0 )					++size;			}						uniqueEntries = new int[size];			size = 0;						for(int i = 0; i < entries.size(); ++i)			{				Entry entry = (Entry)entries.get(i);				if( (entry.modifier & MODIFIER_UNIQUE) != 0 )					uniqueEntries[size++] = i;			}		}				void resetEntries(String text)		{			setColumnCount(0);			setRowCount(0);			rowCount.setText("row count:");			entries.clear();			packetLength = 0;						StringTokenizer lines = new StringTokenizer(text, "\n\r\f");			while( lines.hasMoreTokens() )				addEntry(lines.nextToken());						updateUniqueEntries();						lenText.setText(Integer.toString(packetLength));						fireTableStructureChanged();		}				void removeRows(int[] rows)		{			int i = rows.length;			while( --i >= 0 )				removeRow(rows[i]);						fireTableDataChanged();		}		void sendByte(int a)		{			packet[packetIndex++] = (byte)a;		}		void sendShort(int a)		{			packet[packetIndex++] = (byte)a;			packet[packetIndex++] = (byte)(a >> 8);		}		void sendInt24(int a)		{			packet[packetIndex++] = (byte)a;			packet[packetIndex++] = (byte)(a >> 8);			packet[packetIndex++] = (byte)(a >> 16);		}		void sendInt(int a)		{			packet[packetIndex++] = (byte)a;			packet[packetIndex++] = (byte)(a >> 8);			packet[packetIndex++] = (byte)(a >> 16);			packet[packetIndex++] = (byte)(a >> 24);		}		void sendEntry(Entry entry)		{			if( (entry.modifier & MODIFIER_OMIT) != 0 )				entry.value = entry.defValue;						switch(entry.type)			{			case TYPE_UINT8:			case TYPE_INT8:			case TYPE_HEX8:				sendByte(parseInt(entry.value));				break;			case TYPE_UINT16:			case TYPE_INT16:			case TYPE_HEX16:				sendShort(parseInt(entry.value));				break;			case TYPE_UINT24:			case TYPE_INT24:			case TYPE_HEX24:				sendInt24(parseInt(entry.value));				break;			case TYPE_UINT32:			case TYPE_INT32:			case TYPE_HEX32:				sendInt(parseInt(entry.value));				break;			case TYPE_FLOAT:				sendInt(Float.floatToIntBits(parseFloat(entry.value)));				break;			}		}				void sendRow(int index)		{			packet = new byte[packetLength];			packetIndex = 0;						String text = "sending message " + index;			errorText.setText(text);						for(int i = 0; i < entries.size(); ++i)			{				Entry entry = (Entry)entries.get(i);				if( entry.column >= 0 )					entry.value = (String)getValueAt(index, entry.column);				sendEntry(entry);			}						if( text.equals(errorText.getText()) )	// if no error			{				// broadcast it now				SerialConnector.instance().sendMessage(0xFFFF, (short)amType, (short)0, packet);			}		}				void sendRows(int[] rows)		{			for(int i = 0; i < rows.length; ++i)				sendRow(rows[i]);		}				class RowComparator implements Comparator		{			int column = 0;						public RowComparator(int column)			{				this.column = column;			}						public int compare(Object o1, Object o2)			{				if( o1 == null )					return -1;				if( o2 == null )					return 1;								Comparable c1 = (Comparable)((Vector)o1).get(column);				Comparable c2 = (Comparable)((Vector)o2).get(column);								return c1.compareTo(c2);			}		};				void sort(int column)		{			Collections.sort(dataVector, new RowComparator(column));		}	};		int amType;	private MyTableModel tableModel = new MyTableModel();	int parseInt(String value)	{		try		{			if(value == null)				return 0;			else if(value.trim().toUpperCase().startsWith("0X"))				return Integer.parseInt(value.trim().substring(2),16);			else				return Integer.parseInt(value.trim());		}		catch(RuntimeException e)		{			errorText.setText("invalid integer format: " + value);			return 0;		}	}		float parseFloat(String value)	{		try		{			if( value == null )				return 0;			else				return Float.parseFloat(value);		}		catch(RuntimeException e)		{			errorText.setText("invalid float format: " + value);			return 0;		}	}	public class MyColumnListener extends MouseAdapter	{		public void mouseClicked(MouseEvent event)		{			if( event.getClickCount() != 2 )				return;						int index = table.getColumnModel().getColumnIndexAtX(event.getX());			index = table.convertColumnIndexToModel(index);			if( index < 0 )				return;					tableModel.sort(index);		}	};		Preferences prefs = null;		/** Creates new form MessageTable */	public MessageTable() 	{		super("MessageTable");		initComponents();				table.getTableHeader().addMouseListener(new MyColumnListener());				prefs = Preferences.userNodeForPackage(this.getClass());		prefs = prefs.node(prefs.absolutePath()+"/MessageTable");		loadComboBox();				SerialConnector.instance().registerPacketListener(this,			SerialConnector.GET_ALL_MESSAGES);	}		public void sliceFloodRoutingMsg(byte[] packet)	{		int headerLength = 3;		int dataLength = tableModel.packetLength - headerLength;		int packetLength = packet[PACKET_LENGTH] & 0xFF;		byte[] slice = new byte[PACKET_DATA + headerLength + dataLength];						if ((packetLength-headerLength) % dataLength != 0)			return;		for(int i = headerLength; i < packetLength; i += dataLength)		{			slice[PACKET_LENGTH] = (byte)(headerLength + dataLength);			System.arraycopy(packet, PACKET_DATA, slice, PACKET_DATA, headerLength);			System.arraycopy(packet, PACKET_DATA + i, slice, PACKET_DATA + headerLength, dataLength);			tableModel.addPacket(slice);		}	}	public void packetReceived(byte[] packet) 	{		if( (packet[PACKET_TYPE] & 0xFF) == amType )		{			if( amType == 130 )				sliceFloodRoutingMsg(packet);			else				tableModel.addPacket(packet);		}	}			/** This method is called from within the constructor to	 * initialize the form.	 * WARNING: Do NOT modify this code. The content of this method is	 * always regenerated by the Form Editor.	 */        private void initComponents() {//GEN-BEGIN:initComponents                java.awt.GridBagConstraints gridBagConstraints;                jPanel2 = new javax.swing.JPanel();                configNameText = new javax.swing.JComboBox();                jButton2 = new javax.swing.JButton();                jButton3 = new javax.swing.JButton();                errorText = new javax.swing.JTextField();                jPanel3 = new javax.swing.JPanel();                jLabel1 = new javax.swing.JLabel();                amTypeText = new javax.swing.JTextField();                timeStampBox = new javax.swing.JCheckBox();                counterBox = new javax.swing.JCheckBox();                jScrollPane2 = new javax.swing.JScrollPane();                formatText = new javax.swing.JTextArea();                jLabel2 = new javax.swing.JLabel();                lenText = new javax.swing.JTextField();                firstUniqueBox = new javax.swing.JCheckBox();                jPanel4 = new javax.swing.JPanel();                jPanel1 = new javax.swing.JPanel();                jButton41 = new javax.swing.JButton();                jButton5 = new javax.swing.JButton();                jButton4 = new javax.swing.JButton();                jButton1 = new javax.swing.JButton();                jScrollPane1 = new javax.swing.JScrollPane();                table = new javax.swing.JTable();                rowCount = new javax.swing.JTextField();                getContentPane().setLayout(new java.awt.GridBagLayout());                setTitle("Message Table");                setMinimumSize(new java.awt.Dimension(300, 100));                jPanel2.setLayout(new java.awt.GridBagLayout());                jPanel2.setBorder(new javax.swing.border.TitledBorder("Configuration"));                configNameText.setEditable(true);                configNameText.setMaximumRowCount(100);                configNameText.setToolTipText("the name of the configuration");                configNameText.addActionListener(new java.awt.event.ActionListener() {                        public void actionPerformed(java.awt.event.ActionEvent evt) {                                configNameTextActionPerformed(evt);                        }                });                gridBagConstraints = new java.awt.GridBagConstraints();                gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;                gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;                gridBagConstraints.weightx = 1.0;                gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);                jPanel2.add(configNameText, gridBagConstraints);                jButton2.setText("Save");                jButton2.setToolTipText("save the current configuration in the preferences");                jButton2.setMaximumSize(new java.awt.Dimension(80, 26));                jButton2.setMinimumSize(new java.awt.Dimension(80, 26));                jButton2.setPreferredSize(new java.awt.Dimension(80, 26));                jButton2.addActionListener(new java.awt.event.ActionListener() {                        public void actionPerformed(java.awt.event.ActionEvent evt) {                                jButton2ActionPerformed(evt);                        }                });                gridBagConstraints = new java.awt.GridBagConstraints();

⌨️ 快捷键说明

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