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

📄 gui_datamemorydialog.java

📁 這是一個8051的模擬器 以java寫成
💻 JAVA
字号:
import java.awt.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;/** * Projet de langage JAVA IFITEP 3 2005 - Simulateur 8051  * <p>  * GUI_DataMemoryDialog *   * @author Matthieu SIMON * @version 1.0 du 28/06/05 */public class GUI_DataMemoryDialog extends JDialog {	private JTable internalMemTable;	private JTable externalMemTable;		public GUI_DataMemoryDialog(JFrame frame) {		super(frame);		setTitle("Data Memory");		getContentPane().setLayout(new GridLayout(2,0));		internalMemTable = createMemTable(internalMemTable,CORE_CPU8051.internalDataMem);		externalMemTable = createMemTable(externalMemTable,CORE_CPU8051.externalDataMem);	}		private JTable createMemTable(JTable table, int[] dataMem) {		DataMemTableModel tableModel;		table = new JTable((tableModel = new DataMemTableModel(dataMem.length/8)));		table.setPreferredScrollableViewportSize(new Dimension(1000, 1000));		JScrollPane scrollPane = new JScrollPane(table);		getContentPane().add(scrollPane);					table.getColumnModel().getColumn(0).setMaxWidth(50);		table.getColumnModel().getColumn(0).setResizable(false);		for(int i = 0; i < 8; i++)			table.getColumnModel().getColumn(i+1).setPreferredWidth(30);		for(int i = 0; i < dataMem.length/8; i++)			table.setValueAt(Integer.toHexString(i*8).toUpperCase(), i, 0);		table.setEnabled(false);		table.getModel().addTableModelListener(new DataTableModelListener(table, dataMem));		return table;	}		public void setDefaultLocation() {		setSize(250, 160+560);			setLocation(520, 30);		setVisible(true);	}		public void fillDataMemory() {		for(int i = 0; i < CORE_CPU8051.internalDataMem.length/8; i++)			for(int j = 0; j < 8; j++)								internalMemTable.setValueAt(Integer.toHexString(CORE_CPU8051.internalDataMem[8*i+j]&0xFF).toUpperCase(), i, j+1);		internalMemTable.setEnabled(true);				for(int i = 0; i < CORE_CPU8051.externalDataMem.length/8; i++)			for(int j = 0; j < 8; j++)				externalMemTable.setValueAt(Integer.toHexString(CORE_CPU8051.externalDataMem[8*i+j]&0xFF).toUpperCase(), i, j+1);		externalMemTable.setEnabled(true);	}		private class DataTableModelListener implements TableModelListener {		private int[] dataMem;		private JTable table;		public DataTableModelListener(JTable table, int[] dataMem) {			this.dataMem = dataMem;		}		public void tableChanged(TableModelEvent e) {			        int row = e.getFirstRow();	        int column = e.getColumn();        	TableModel model = (TableModel)e.getSource();        	String data = (String)model.getValueAt(row, column);        	if(data.length() > 2) { // bytes allowed only        		data = data.substring(0, 2);        		model.setValueAt(data, row, column);	        		        	}	        	        	int tmp;        	try {        		tmp = Integer.parseInt(data, 16);        	}        	catch(NumberFormatException ex) {        		model.setValueAt(        				Integer.toHexString(dataMem[8*row + (column-1)]&0xFF).toUpperCase(),						row, column);        		return;        	}        	dataMem[8*row + (column-1)] = tmp&0xFF;	    }	}	private class DataMemTableModel extends AbstractTableModel {		private String[] columnNames = { "Addr", "+0", "+1", "+2", "+3", "+4", "+5", "+6", "+7"};		private Object[][] rowData;		public DataMemTableModel(int rowNum) {			super();			rowData = new Object[rowNum][columnNames.length];		}		public String getColumnName(int col) {	        return columnNames[col].toString();	    }	    public int getRowCount() {	    	return rowData.length;	    }	    public int getColumnCount() {	    	return columnNames.length;	    }	    public Object getValueAt(int row, int col) {	        return rowData[row][col];	    }	    public boolean isCellEditable(int row, int col) {	    	if(col == 0) return false; 	    	return true;	    }	    public void setValueAt(Object value, int row, int col) {	        rowData[row][col] = value;	        fireTableCellUpdated(row, col);	    }	}}

⌨️ 快捷键说明

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