达人们,我这里有一个 JScrollPane,有 3列 variable, value, time, 全是 string 类型.不过要求手工对 value 的输入必须是浮点类型的,否则的话连非法输入都不让显示。程序里对 value 的修改可以不受这个条件限制,可以修改为非浮点型的字符串。请问该如何实现?十分感谢!我写好的代码:GlobalVari_5.java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;public class GlobalVari_5 extends JFrame{
private static final long serialVersionUID = 1L;
private static double select = 0;
private static int rowIndex = 0; // /表格方法使用
public GlobalVari_5(){
init(); this.setTitle("Global Variables");
this.setSize(new Dimension(650, 400));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
//this.setLayout(null);
this.setResizable(false);
} private void init(){
Vector<String> colHeader = new Vector<String>();
colHeader.add("Variable");
colHeader.add("Value");
colHeader.add("Time"); Vector<Vector<String>> dataVec = new Vector<Vector<String>>(); final JTable table = new JTable(dataVec,colHeader){
private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int column){
if(column > 1){
return false;
} else {
return true;
}
}
}; //2设置表头行高
table.getTableHeader().setPreferredSize(new Dimension(0,30));
//3设置表内容行高
table.setRowHeight(25);
//4设置单选模式
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//5设置单元格不可拖动
table.getTableHeader().setReorderingAllowed(false);
//6设置不可改变列宽
table.getTableHeader().setResizingAllowed(false);
//7设置列宽
table.getColumnModel().getColumn(0).setPreferredWidth(95);
table.getColumnModel().getColumn(1).setPreferredWidth(55);
table.getColumnModel().getColumn(2).setPreferredWidth(30);
//注意索引越界 DefaultTableCellRenderer right = new DefaultTableCellRenderer();
right.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(1).setCellRenderer(right);
table.getColumnModel().getColumn(2).setCellRenderer(right);
final JButton buttonAdd = new JButton("Add");
final JButton buttonDel = new JButton("Delete");
final JButton buttonCls = new JButton("Close");
rowIndex = table.getSelectedRow();
System.out.println("index:"+rowIndex);
//监听事件
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()){//连续操作
rowIndex = table.getSelectedRow();
if(rowIndex != -1){
System.out.println("表格行被选中"+rowIndex);
buttonDel.setEnabled(true);
select = 1;
}
}
}
}); JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
//this.add(scrollPane,BorderLayout.WEST);
this.add(scrollPane);
scrollPane.setSize(515, 350);
scrollPane.setLocation(5, 5); buttonAdd.setEnabled(true);
buttonDel.setEnabled(false);
buttonCls.setEnabled(true); JPanel panel = new JPanel();
panel.setSize(10, 350);
panel.setLocation(520, 5);
//this.add(panel, BorderLayout.EAST);
this.add(panel);
panel.setLayout(null);
panel.add(buttonAdd);
buttonAdd.setSize(100, 30);
buttonAdd.setLocation(530, 6);
panel.add(buttonDel);
buttonDel.setSize(100, 30);
buttonDel.setLocation(530, 50);
panel.add(buttonCls);
buttonCls.setSize(100, 30);
buttonCls.setLocation(530, 322); buttonAdd.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
DefaultTableModel model = (DefaultTableModel)table.getModel();
int rownum = table.getRowCount() + 1;
model.addRow(new Object[]{"gvar" + rownum, "", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())});
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
}); buttonDel.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
if(select == 1){
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.removeRow(rowIndex);
select = 0;
buttonDel.setEnabled(false);
}
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
buttonCls.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
setVisible(false);
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
} public static void main(String[] args){
new GlobalVari_5();
}
}
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;public class GlobalVari_5 extends JFrame{
private static final long serialVersionUID = 1L;
private static double select = 0;
private static int rowIndex = 0; // /表格方法使用
public GlobalVari_5(){
init(); this.setTitle("Global Variables");
this.setSize(new Dimension(650, 400));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
//this.setLayout(null);
this.setResizable(false);
} private void init(){
Vector<String> colHeader = new Vector<String>();
colHeader.add("Variable");
colHeader.add("Value");
colHeader.add("Time"); Vector<Vector<String>> dataVec = new Vector<Vector<String>>(); final JTable table = new JTable(dataVec,colHeader){
private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int column){
if(column > 1){
return false;
} else {
return true;
}
}
}; //2设置表头行高
table.getTableHeader().setPreferredSize(new Dimension(0,30));
//3设置表内容行高
table.setRowHeight(25);
//4设置单选模式
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//5设置单元格不可拖动
table.getTableHeader().setReorderingAllowed(false);
//6设置不可改变列宽
table.getTableHeader().setResizingAllowed(false);
//7设置列宽
table.getColumnModel().getColumn(0).setPreferredWidth(95);
table.getColumnModel().getColumn(1).setPreferredWidth(55);
table.getColumnModel().getColumn(2).setPreferredWidth(30);
//注意索引越界 DefaultTableCellRenderer right = new DefaultTableCellRenderer();
right.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(1).setCellRenderer(right);
table.getColumnModel().getColumn(2).setCellRenderer(right);
final JButton buttonAdd = new JButton("Add");
final JButton buttonDel = new JButton("Delete");
final JButton buttonCls = new JButton("Close");
rowIndex = table.getSelectedRow();
System.out.println("index:"+rowIndex);
//监听事件
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()){//连续操作
rowIndex = table.getSelectedRow();
if(rowIndex != -1){
System.out.println("表格行被选中"+rowIndex);
buttonDel.setEnabled(true);
select = 1;
}
}
}
}); JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
//this.add(scrollPane,BorderLayout.WEST);
this.add(scrollPane);
scrollPane.setSize(515, 350);
scrollPane.setLocation(5, 5); buttonAdd.setEnabled(true);
buttonDel.setEnabled(false);
buttonCls.setEnabled(true); JPanel panel = new JPanel();
panel.setSize(10, 350);
panel.setLocation(520, 5);
//this.add(panel, BorderLayout.EAST);
this.add(panel);
panel.setLayout(null);
panel.add(buttonAdd);
buttonAdd.setSize(100, 30);
buttonAdd.setLocation(530, 6);
panel.add(buttonDel);
buttonDel.setSize(100, 30);
buttonDel.setLocation(530, 50);
panel.add(buttonCls);
buttonCls.setSize(100, 30);
buttonCls.setLocation(530, 322); buttonAdd.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
DefaultTableModel model = (DefaultTableModel)table.getModel();
int rownum = table.getRowCount() + 1;
model.addRow(new Object[]{"gvar" + rownum, "", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())});
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
}); buttonDel.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
if(select == 1){
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.removeRow(rowIndex);
select = 0;
buttonDel.setEnabled(false);
}
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
buttonCls.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
setVisible(false);
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
} public static void main(String[] args){
new GlobalVari_5();
}
}
手工输入肯定要设置到焦点,失去焦点时就会调用该方法,从而正则检验
而程序修改时不用设置焦点的,也就不会调用到该方法。
应该是你想要的吧
然后在plainDocument对象的insertString方法中验证即可具体你可以google,大致思路就是这样!
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;public class GlobalVari_5 extends JFrame{
private static final long serialVersionUID = 1L;
private static double select = 0;
private static int rowIndex = 0; // /表格方法使用
public GlobalVari_5(){
init(); this.setTitle("Global Variables");
this.setSize(new Dimension(650, 400));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
//this.setLayout(null);
this.setResizable(false);
} private void init(){
Vector<String> colHeader = new Vector<String>();
colHeader.add("Variable");
colHeader.add("Value");
colHeader.add("Time"); Vector<Vector<String>> dataVec = new Vector<Vector<String>>(); final JTable table = new JTable(dataVec,colHeader){
private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int column){
if(column > 1){
return false;
} else {
return true;
}
}
public void editingStopped(ChangeEvent ce) {
super.editingStopped(ce);
int row = getSelectedRow();
int col = getSelectedColumn();
if (row < 0 || col < 0) {
return;
} Object value = getValueAt(row, col);
System.out.println(row + "," + col + ":" + value);
// 检查是不是浮点数
try {
Double.parseDouble((String) value);
} catch (Exception e) {
// 不是浮点
setValueAt("", row, col);
JOptionPane.showMessageDialog(this.getParent(), value
+ "不是浮点数!", "错误", JOptionPane.ERROR_MESSAGE);
}
} }; //2设置表头行高
table.getTableHeader().setPreferredSize(new Dimension(0,30));
//3设置表内容行高
table.setRowHeight(25);
//4设置单选模式
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//5设置单元格不可拖动
table.getTableHeader().setReorderingAllowed(false);
//6设置不可改变列宽
table.getTableHeader().setResizingAllowed(false);
//7设置列宽
table.getColumnModel().getColumn(0).setPreferredWidth(95);
table.getColumnModel().getColumn(1).setPreferredWidth(55);
table.getColumnModel().getColumn(2).setPreferredWidth(30);
//注意索引越界 DefaultTableCellRenderer right = new DefaultTableCellRenderer();
right.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(1).setCellRenderer(right);
table.getColumnModel().getColumn(2).setCellRenderer(right);
final JButton buttonAdd = new JButton("Add");
final JButton buttonDel = new JButton("Delete");
final JButton buttonCls = new JButton("Close");
rowIndex = table.getSelectedRow();
System.out.println("index:"+rowIndex);
//监听事件
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()){//连续操作
rowIndex = table.getSelectedRow();
if(rowIndex != -1){
System.out.println("表格行被选中"+rowIndex);
buttonDel.setEnabled(true);
select = 1;
}
}
}
}); JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
//this.add(scrollPane,BorderLayout.WEST);
this.add(scrollPane);
scrollPane.setSize(515, 350);
scrollPane.setLocation(5, 5); buttonAdd.setEnabled(true);
buttonDel.setEnabled(false);
buttonCls.setEnabled(true); JPanel panel = new JPanel();
panel.setSize(10, 350);
panel.setLocation(520, 5);
//this.add(panel, BorderLayout.EAST);
this.add(panel);
panel.setLayout(null);
panel.add(buttonAdd);
buttonAdd.setSize(100, 30);
buttonAdd.setLocation(530, 6);
panel.add(buttonDel);
buttonDel.setSize(100, 30);
buttonDel.setLocation(530, 50);
panel.add(buttonCls);
buttonCls.setSize(100, 30);
buttonCls.setLocation(530, 322); buttonAdd.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
DefaultTableModel model = (DefaultTableModel)table.getModel();
int rownum = table.getRowCount() + 1;
model.addRow(new Object[]{"gvar" + rownum, "", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())});
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
}); buttonDel.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
if(select == 1){
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.removeRow(rowIndex);
select = 0;
buttonDel.setEnabled(false);
}
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
buttonCls.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
setVisible(false);
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
} public static void main(String[] args){
new GlobalVari_5();
}
}
super.editingStopped(ce);
int row = getSelectedRow();
int col = getSelectedColumn();
if (row < 0 || col < 0) {
return;
} Object value = getValueAt(row, col);
System.out.println(row + "," + col + ":" + value);
// 检查是不是浮点数
try {
Double.parseDouble((String) value);
} catch (Exception e) {
// 不是浮点
setValueAt("", row, col);
JOptionPane.showMessageDialog(this.getParent(), value
+ "不是浮点数!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
注意:正负号。
scbb, 这个确实是做到了验证是不是浮点数。不过,我希望能做得更干脆些,用户想要输入字母,特殊字符都直接输不进去。而不是输进去后再判断给出提示。这个可以做到么?
这样可以。你看看。import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;public class GlobalVari_5 extends JFrame{
private static final long serialVersionUID = 1L;
private static double select = 0;
private static int rowIndex = 0; // /表格方法使用
public GlobalVari_5(){
init(); this.setTitle("Global Variables");
this.setSize(new Dimension(650, 400));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
//this.setLayout(null);
this.setResizable(false);
} private void init(){
Vector<String> colHeader = new Vector<String>();
colHeader.add("Variable");
colHeader.add("Value");
colHeader.add("Time"); Vector<Vector<String>> dataVec = new Vector<Vector<String>>(); final JTable table = new JTable(dataVec,colHeader){
private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int column){
if(column > 1){
return false;
} else {
return true;
}
}
};
//把Value列设为只能输入浮点数
TableColumn column = table.getColumnModel().getColumn(1);
JTextField textField = new JTextField();
textField.setDocument(new DoubleDocument());
column.setCellEditor(new DefaultCellEditor(textField));
//2设置表头行高
table.getTableHeader().setPreferredSize(new Dimension(0,30));
//3设置表内容行高
table.setRowHeight(25);
//4设置单选模式
table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//5设置单元格不可拖动
table.getTableHeader().setReorderingAllowed(false);
//6设置不可改变列宽
table.getTableHeader().setResizingAllowed(false);
//7设置列宽
table.getColumnModel().getColumn(0).setPreferredWidth(95);
table.getColumnModel().getColumn(1).setPreferredWidth(55);
table.getColumnModel().getColumn(2).setPreferredWidth(30);
//注意索引越界 DefaultTableCellRenderer right = new DefaultTableCellRenderer();
right.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(1).setCellRenderer(right);
table.getColumnModel().getColumn(2).setCellRenderer(right);
final JButton buttonAdd = new JButton("Add");
final JButton buttonDel = new JButton("Delete");
final JButton buttonCls = new JButton("Close");
rowIndex = table.getSelectedRow();
System.out.println("index:"+rowIndex);
//监听事件
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()){//连续操作
rowIndex = table.getSelectedRow();
if(rowIndex != -1){
System.out.println("表格行被选中"+rowIndex);
buttonDel.setEnabled(true);
select = 1;
}
}
}
}); JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
//this.add(scrollPane,BorderLayout.WEST);
this.add(scrollPane);
scrollPane.setSize(515, 350);
scrollPane.setLocation(5, 5); buttonAdd.setEnabled(true);
buttonDel.setEnabled(false);
buttonCls.setEnabled(true); JPanel panel = new JPanel();
panel.setSize(10, 350);
panel.setLocation(520, 5);
//this.add(panel, BorderLayout.EAST);
this.add(panel);
panel.setLayout(null);
panel.add(buttonAdd);
buttonAdd.setSize(100, 30);
buttonAdd.setLocation(530, 6);
panel.add(buttonDel);
buttonDel.setSize(100, 30);
buttonDel.setLocation(530, 50);
panel.add(buttonCls);
buttonCls.setSize(100, 30);
buttonCls.setLocation(530, 322); buttonAdd.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
DefaultTableModel model = (DefaultTableModel)table.getModel();
int rownum = table.getRowCount() + 1;
model.addRow(new Object[]{"gvar" + rownum, "", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())});
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
}); buttonDel.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
if(select == 1){
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.removeRow(rowIndex);
select = 0;
buttonDel.setEnabled(false);
}
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
buttonCls.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
setVisible(false);
} public void mousePressed(MouseEvent e){
} public void mouseReleased(MouseEvent e){
} public void mouseEntered(MouseEvent e){
} public void mouseExited(MouseEvent e){
}
});
} public static void main(String[] args){
new GlobalVari_5();
}
class DoubleDocument extends PlainDocument {
public void insertString(int offset, String string,
AttributeSet attributeSet) throws BadLocationException {
try {
int length = getLength();
String currentContent = getText(0, length);
StringBuffer currentBuffer = new StringBuffer(currentContent);
currentBuffer.insert(offset, string);
String newValue = currentBuffer.toString();
Double.parseDouble(newValue);
} catch (Exception ex) {
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset, string, attributeSet);
}
}}
另外使用了以下方法进行了数字检查,
由于Jdk api的设计,所以类似下面的字符都可以输入。
3.14f //表示float数
12.5D //表示double数
Double.parseDouble(newValue);
如果不合符要求,请找网上正则表达式来检查。
那个,我还想吹毛求疵一下,虽然我已经设定了 value列的显示是靠右,但是手动输入的时候,光标和已输入的内容(如果有的话)会移动到左边来。这个有没有办法让在手动输入的时候,value列的内容和光标都还是保持在右边呢?一百分的感谢!
textField.setHorizontalAlignment(JTextField.RIGHT);// 这句新加一下,试试看。
column.setCellEditor(new DefaultCellEditor(textField));
现在 value列好像还可以输入类似 0110 这样的,能在cell 失去焦点的时候把 0110 这样的变成 110 么?
现在 value列好像还可以输入类似 0110 这样的,能在cell 失去焦点的时候把 0110 这样的变成 110 么?同时也把 3d 或 3f 这样的也变成 3 或 3.0?非常感谢!
final JTable table = new JTable(dataVec,colHeader){
private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int column){
if(column > 1){
return false;
} else {
return true;
}
}
public void editingStopped(ChangeEvent ce) {
super.editingStopped(ce);
int row = getSelectedRow();
int col = getSelectedColumn();
if (row < 0 || col != 1) {
return;
} Object value = getValueAt(row, col);
// 检查是不是浮点数
try {
double tempVal = Double.parseDouble((String) value);
setValueAt(BigDecimal.valueOf(tempVal).stripTrailingZeros(), row, col);
} catch (Exception e) {
// 不是浮点
setValueAt("", row, col);
//JOptionPane.showMessageDialog(this.getParent(), value
// + "不是浮点数!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
};
嗯,好像程序里可以修改,不过要是用户手动双击选中了 value列的那个 cell, 再把光标移开,值就会被清空。对吧。