JTable如果实现Excel中在单元格中输入数据时自动清空原来的数据的功能? RT。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参照这个例子import javax.swing.*;import java.awt.event.*;import java.awt.BorderLayout;import java.awt.Dimension;public class JTableTest extends JFrame implements KeyListener { private String[][] tabledata = { { "AAA", "3", "0", "9" }, { "BBB", "0", "2", "0" }, { "CCC", "1", "2", "1" }, { "DDD", "2", "2", "0" } }; private String[] columnNames = { "COUNTRY", "WIN", "LOST", "EVEN" }; JTable table = null; int currentRow = -1; int currentCol = -1; public static void main(String[] args) { JTableTest test = new JTableTest("JTableTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } JTableTest(String title) { setTitle(title); setBounds(10, 10, 300, 200); table = new JTable(tabledata, columnNames); table.setColumnSelectionAllowed(false); table.setRowSelectionAllowed(false); table.addKeyListener(this); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(250, 100)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.CENTER); } public void keyPressed(KeyEvent e) { int col = table.getSelectedColumn(); int row = table.getSelectedRow(); System.out.println(table.getValueAt(row, col)); if (!(col == currentCol && row == currentRow)) { table.setValueAt("", row, col); } else { currentCol = col; currentRow = row; } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { }} 设置editor,在editor里面进行处理。应该是那种默认选中某单元格时,全选里面的文字,编辑的时候就相当于全部清除再录入的情形吧。 感谢hq1305018辛苦写代码 可惜这种方法我也做过 达不到我想要的结果 跟excel的也相差太多 比如我按Tab键或者Ctrl键这两个重要的键时候单元格也被清空了 对于编辑数据的时候相当不方便 你的想法非常好 我觉得很有道理 可惜我不懂得怎么做 我研究过DefaultCellEditor 可是还是做不出那种效果 如果你知道的话 请你告诉我 谢谢! 用这个最新的代码再试试看.import javax.swing.*;import java.awt.event.*;import java.awt.BorderLayout;import java.awt.Dimension;public class JTableTest extends JFrame implements KeyListener { private String[][] tabledata = { { "AAA", "3", "0", "9" }, { "BBB", "0", "2", "0" }, { "CCC", "1", "2", "1" }, { "DDD", "2", "2", "0" } }; private String[] columnNames = { "COUNTRY", "WIN", "LOST", "EVEN" }; JTable table = null; int currentRow = -1; int currentCol = -1; public static void main(String[] args) { JTableTest test = new JTableTest("JTableTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } JTableTest(String title) { setTitle(title); setBounds(10, 10, 300, 200); table = new JTable(tabledata, columnNames); table.setColumnSelectionAllowed(false); table.setRowSelectionAllowed(false); table.addKeyListener(this); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(250, 100)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.CENTER); } public void keyPressed(KeyEvent e) { if (e.isAltDown() || e.isControlDown()) // ALT,CONTROL return; if (e.getKeyCode() == 0 // FN || e.getKeyCode() == 9 // TAB || e.getKeyCode() == 27 // ESC || (e.getKeyCode() >= 112 && e.getKeyCode() <= 123) // F1-F12 || (e.getKeyCode() >= 16 && e.getKeyCode() <= 18) // ctrl,alt,shift || (e.getKeyCode() >= 33 && e.getKeyCode() <= 36) // home,end,PgUp,PgDn || (e.getKeyCode() >= 37 && e.getKeyCode() <= 40) // up,down,left,right || e.getKeyCode() == 155 // Insert || e.getKeyCode() == 9 // Backspace || e.getKeyCode() == 145 // Numlk ScrLk || e.getKeyCode() == 19 // Pause || e.getKeyCode() == 20 // Caps Lock || e.getKeyCode() == 29 // language || e.getKeyCode() == 10) // Enter return; int col = table.getSelectedColumn(); int row = table.getSelectedRow(); System.out.println(table.getValueAt(row, col)); if (!(col == currentCol && row == currentRow)) { table.setValueAt("", row, col); } else { currentCol = col; currentRow = row; } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { }} to hq1305018:这种做法我也试过 过于繁琐 而且也没达到我要的效果 后来我看到一个帖子(http://topic.csdn.net/t/20030827/11/2192632.html)跟我要的效果一样 终于解决了 最近比较忙 没有及时过来看 谢谢你们的帮忙! 求救,java文件读取,排序 求助!JAVA中计算COS 90度为什么结果不为0? String s ="aaa"; 创建了几个对象,几个引用?? 制作计算器的思路应该是怎样? 正则表达式的书写问题 连sqlserver的问题。 请问如何将set集合里的数据取出来跟已知的数据进行比较? 关于乱码 不会就问 鸟鸟问题:我在开头import java.lang.*,当我执行该程序的时候她居然说: List接口 有点不懂...... swing
import java.awt.BorderLayout;
import java.awt.Dimension;public class JTableTest extends JFrame implements KeyListener { private String[][] tabledata = { { "AAA", "3", "0", "9" },
{ "BBB", "0", "2", "0" }, { "CCC", "1", "2", "1" },
{ "DDD", "2", "2", "0" } }; private String[] columnNames = { "COUNTRY", "WIN", "LOST", "EVEN" }; JTable table = null; int currentRow = -1; int currentCol = -1; public static void main(String[] args) {
JTableTest test = new JTableTest("JTableTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
} JTableTest(String title) {
setTitle(title);
setBounds(10, 10, 300, 200); table = new JTable(tabledata, columnNames);
table.setColumnSelectionAllowed(false);
table.setRowSelectionAllowed(false);
table.addKeyListener(this);
JScrollPane sp = new JScrollPane(table);
sp.setPreferredSize(new Dimension(250, 100)); JPanel p = new JPanel();
p.add(sp); getContentPane().add(p, BorderLayout.CENTER);
} public void keyPressed(KeyEvent e) {
int col = table.getSelectedColumn();
int row = table.getSelectedRow();
System.out.println(table.getValueAt(row, col));
if (!(col == currentCol && row == currentRow)) {
table.setValueAt("", row, col);
} else {
currentCol = col;
currentRow = row;
}
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
}
}
你的想法非常好 我觉得很有道理 可惜我不懂得怎么做 我研究过DefaultCellEditor 可是还是做不出那种效果 如果你知道的话 请你告诉我 谢谢!
import java.awt.BorderLayout;
import java.awt.Dimension;public class JTableTest extends JFrame implements KeyListener { private String[][] tabledata = { { "AAA", "3", "0", "9" },
{ "BBB", "0", "2", "0" }, { "CCC", "1", "2", "1" },
{ "DDD", "2", "2", "0" } }; private String[] columnNames = { "COUNTRY", "WIN", "LOST", "EVEN" }; JTable table = null; int currentRow = -1; int currentCol = -1; public static void main(String[] args) {
JTableTest test = new JTableTest("JTableTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
} JTableTest(String title) {
setTitle(title);
setBounds(10, 10, 300, 200); table = new JTable(tabledata, columnNames);
table.setColumnSelectionAllowed(false);
table.setRowSelectionAllowed(false);
table.addKeyListener(this);
JScrollPane sp = new JScrollPane(table);
sp.setPreferredSize(new Dimension(250, 100)); JPanel p = new JPanel();
p.add(sp); getContentPane().add(p, BorderLayout.CENTER);
} public void keyPressed(KeyEvent e) { if (e.isAltDown() || e.isControlDown()) // ALT,CONTROL
return;
if (e.getKeyCode() == 0 // FN
|| e.getKeyCode() == 9 // TAB
|| e.getKeyCode() == 27 // ESC
|| (e.getKeyCode() >= 112 && e.getKeyCode() <= 123) // F1-F12
|| (e.getKeyCode() >= 16 && e.getKeyCode() <= 18) // ctrl,alt,shift
|| (e.getKeyCode() >= 33 && e.getKeyCode() <= 36) // home,end,PgUp,PgDn
|| (e.getKeyCode() >= 37 && e.getKeyCode() <= 40) // up,down,left,right
|| e.getKeyCode() == 155 // Insert
|| e.getKeyCode() == 9 // Backspace
|| e.getKeyCode() == 145 // Numlk ScrLk
|| e.getKeyCode() == 19 // Pause
|| e.getKeyCode() == 20 // Caps Lock
|| e.getKeyCode() == 29 // language
|| e.getKeyCode() == 10) // Enter
return;
int col = table.getSelectedColumn();
int row = table.getSelectedRow();
System.out.println(table.getValueAt(row, col));
if (!(col == currentCol && row == currentRow)) {
table.setValueAt("", row, col);
} else {
currentCol = col;
currentRow = row;
}
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
}
}
这种做法我也试过 过于繁琐 而且也没达到我要的效果 后来我看到一个帖子(http://topic.csdn.net/t/20030827/11/2192632.html)跟我要的效果一样 终于解决了 最近比较忙 没有及时过来看 谢谢你们的帮忙!