我已经实现了一种方法,以便用户输入设置为十进制格式。但它有两种编辑JTable单元格(?)的形式。JTable编辑模式
在其中一个(第一张图片),当用户只需选择一个单元格并开始编写我的单元格编辑器不起作用。
但另一方面,当它双击编辑器工作的单元格时。
只有当用户双击时才有编辑的方法吗?
PS .: isCellEditable和setClickClickCountToStart不起作用。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class example extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
example frame = new example();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public example() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JTable table = new JTable(new DefaultTableModel(new Object[]{"RB"}, 10));
table.setPreferredScrollableViewportSize(new Dimension(700, 350));
TableColumn RBColumn = table.getColumnModel().getColumn(0);
RBColumn.setCellEditor(new DefaultCellEditor(tfMon()));
JScrollPane scrollPane = new JScrollPane(table);
contentPane.add(scrollPane, BorderLayout.CENTER);
}
private JTextField tfMon(){
JTextField tf = new JTextField();
tf.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))){
e.consume();
}else{
String txt = tf.getText();
txt = txt.replace(".","").replace("0","");
if(!((c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))){
e.consume();
txt=txt+c;
}
while(txt.length()<3){
txt="0"+txt;
}
txt = txt.substring(0,txt.length()-2)+"."+txt.substring(txt.length()-2,txt.length());
tf.setText(txt);
}
}
});
return tf;
}
}
我的编辑更改单元格的文本为用户键入任何东西。 单元格应该从0.00开始,当用户键入1时,它将变为0.01,依此类推,因此如果他键入1和2,则变为0.12,对于1,2和3,变为1.23。 当用户双击单元格时它工作正常。 –
@FelipeHogrefeBento,我给了你3种可能的解决方案。 – camickr
但是如何以两种方式编辑一个单元? –