每輸入一個數字,數字向前移動一位,剛輸入的數字顯示在最後一個儲存格,點擊刪除鍵,數字向後移動一位,刪除最後一個儲存格裡面的數字。如
package table;</p><p>import java.awt.BorderLayout;<br />import java.awt.Container;<br />import java.awt.Dimension;<br />import java.awt.event.KeyAdapter;<br />import java.awt.event.KeyEvent;<br />import java.awt.event.WindowAdapter;<br />import java.awt.event.WindowEvent;</p><p>import javax.swing.JFrame;<br />import javax.swing.JScrollPane;<br />import javax.swing.JTable;<br />import javax.swing.table.DefaultTableModel;<br />import javax.swing.table.TableColumn;</p><p>public class Test {<br />JTable table = null;<br />JineTableModel defaultModel = null;<br />TableColumn column = null;</p><p>public Test() {<br />JFrame f = new JFrame();<br />String[] n = { "千", "百", "十", "元" };<br />defaultModel = new JineTableModel(n, 10);<br />table = new JTable(defaultModel);</p><p>table.setPreferredScrollableViewportSize(new Dimension(400, 80));<br />JScrollPane s = new JScrollPane(table);<br />Container contentPane = f.getContentPane();<br />contentPane.add(s, BorderLayout.CENTER);</p><p>table.addKeyListener(new MyListener());</p><p>f.setTitle("Test table ActionLisener");<br />f.setLocation(500, 300);<br />f.pack();<br />f.setVisible(true);<br />f.addWindowListener(new WindowAdapter() {<br />public void windowClosing(WindowEvent e) {<br />System.exit(0);<br />}<br />});<br />}</p><p>public class MyListener extends KeyAdapter {<br />public void keyPressed(KeyEvent ke) {<br />int row = table.getSelectedRow();<br />int cols = table.getColumnCount();<br />boolean accept = false;<br />if (ke.getKeyCode() >= 48 && ke.getKeyCode() <= 57) {<br />if (table.getValueAt(row, 0) == null) {<br />if (ke.getKeyCode() == 48) {<br />if (table.getValueAt(row, cols - 2) != null) {<br />accept = true;<br />}<br />} else {<br />accept = true;<br />}<br />}<br />} else if (ke.getKeyCode() == 8) {<br />if (table.getValueAt(row, cols - 1) != null) {<br />for (int i = cols - 1; i > 0; i--) {<br />table.setValueAt(table.getValueAt(row, i - 1), row, i);<br />}<br />table.setValueAt(null, row, 0);<br />}<br />}</p><p>if (accept) {<br />for (int i = 0; i < cols - 1; i++) {<br />table.setValueAt(table.getValueAt(row, i + 1), row, i);<br />}<br />table.setValueAt(null, row, cols - 1);<br />table.setValueAt(ke.getKeyChar(), row, cols - 1);<br />}<br />}<br />}</p><p>public static void main(String args[]) {<br />new Test();<br />}</p><p>public class JineTableModel extends DefaultTableModel {</p><p>private static final long serialVersionUID = 1L;</p><p>public boolean isCellEditable(int r, int c) {<br />return false;<br />}</p><p>JineTableModel(Object[] columnNames, int rowCount) {<br />super(columnNames, rowCount);<br />}<br />}<br />}</p><p>
運行結果