怎样设置JTable的单元格只能输入数字? 要怎样设置JTable的单元格只能输入数字,望大家给予帮忙,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public java.lang.Class getColumnClass(int col) { if(col==2) return java.lang.Number.class; else return java.lang.Object.class; } 关键是这样的话JTable的单元格都不能被编辑啊,我是想让它能输入数字呀! 继承DefaultCellEditor构造一个自己的Editor类比如MyCellEditor(JTable table)重写setValue,getTableCellEditorComponent和getCellEditorValue等方法在这些方法里可以用来判断是否数字,不是数字不能录入等.也可以根据需求重写mouseClicked等事件JTable table = new JTable();DefaultCellEditor editor = new MyCellEditor(table);table.setCellEditor(editor); JTextField有个方法setDocument,自己写一个document,将document的insertString方法改写,如入得不是数字什么都不做,直接return 在网上找的一段代码.一起学习了......import java.awt.Dimension;import java.awt.BorderLayout;import javax.swing.table.DefaultTableModel;import javax.swing.JTable;import javax.swing.JFrame;import javax.swing.JPanel;public class Frame1 extends JFrame { JPanel contentPane; Object[][] object = { {"aaa", new Integer(1)}, {"bbb", new Integer(1)}, {"ccc", new Integer(1)}, {"ddd", new Integer(1)} }; String[] name = {"a", "b"}; JTable table=new JTable(new DefaultTableModel(object,name){ public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if (columnIndex == 1) { Integer num = null; try { num = Integer.parseInt((String) aValue); } catch (Exception ex) { javax.swing.JOptionPane.showMessageDialog(null, "只能输入数字!"); return; } } super.setValueAt(aValue,rowIndex,columnIndex); this.fireTableDataChanged(); } }); public Frame1() { this.setSize(new Dimension(500,300)); this.setVisible(true); try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } /** * Component initialization. * * @throws java.lang.Exception */public static void main(String args[]){ new Frame1().setVisible(true);} private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setLayout(new BorderLayout()); setSize(new Dimension(600, 550)); this.add(table,BorderLayout.CENTER); }} 还有个简单的:package Gsgl;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;public class TableNum extends JFrame { public TableNum() { super(); this.init(); this.setSize(new Dimension(400,200)); } private void init() { this.getContentPane().add(new JTable(new DefaultTableModel() { @SuppressWarnings("unchecked") public Class getColumnClass(int c) { return Integer.class; } public int getColumnCount() { return 10; } public int getRowCount() { return 10; } })); } public static void main(String[] args) { TableNum l = new TableNum(); l.setVisible(true); l.setDefaultCloseOperation(EXIT_ON_CLOSE); }} 这个好象可以呀,只要把你想要输入数字的列设置一下就可以了:columnIndex == 你的列。 急救!!! 关于JAVA开发环境配置问题! 利用反射进行动态加载的问题? 大家好,我在myeclipse下开发JSP的数据库网站,,那JDBC的数据库驱动程序文件放在哪里啊,我不会,初用,感谢 <html:errors/>问题 那位高人指点一下 如何取得两个具体的时间的差,以毫秒算差值 我不大理解protected 请指教 jdk配置问题 如何用jdbc或jdbc-odbc连接Sybase数据库(syetem 11) 急等jxl包 问题1:如何在单击确认前一直循环。问题2:如何每隔一定时间去执行一个方法
{
if(col==2)
return java.lang.Number.class;
else
return java.lang.Object.class;
}
比如MyCellEditor(JTable table)
重写setValue,getTableCellEditorComponent和getCellEditorValue等方法
在这些方法里可以用来判断是否数字,不是数字不能录入等.
也可以根据需求重写mouseClicked等事件
JTable table = new JTable();
DefaultCellEditor editor = new MyCellEditor(table);
table.setCellEditor(editor);
import java.awt.Dimension;
import java.awt.BorderLayout;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTable;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Frame1 extends JFrame {
JPanel contentPane;
Object[][] object = { {"aaa", new Integer(1)}, {"bbb", new Integer(1)},
{"ccc", new Integer(1)}, {"ddd", new Integer(1)}
};
String[] name = {"a", "b"};
JTable table=new JTable(new DefaultTableModel(object,name){
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
if (columnIndex == 1) {
Integer num = null;
try {
num = Integer.parseInt((String) aValue);
} catch (Exception ex) {
javax.swing.JOptionPane.showMessageDialog(null, "只能输入数字!");
return; }
}
super.setValueAt(aValue,rowIndex,columnIndex);
this.fireTableDataChanged();
}
}); public Frame1() {
this.setSize(new Dimension(500,300));
this.setVisible(true);
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
} /**
* Component initialization.
*
* @throws java.lang.Exception
*/
public static void main(String args[]){
new Frame1().setVisible(true);
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(new BorderLayout());
setSize(new Dimension(600, 550));
this.add(table,BorderLayout.CENTER); }}
package Gsgl;import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;public class TableNum extends JFrame { public TableNum() {
super();
this.init();
this.setSize(new Dimension(400,200));
} private void init() {
this.getContentPane().add(new JTable(new DefaultTableModel() {
@SuppressWarnings("unchecked")
public Class getColumnClass(int c) {
return Integer.class;
} public int getColumnCount() {
return 10;
} public int getRowCount() {
return 10;
}
}));
} public static void main(String[] args) {
TableNum l = new TableNum();
l.setVisible(true);
l.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}