我自己做了手机编辑。
某个列的每个单元格都包含一个jtextfield和一个附加的keylistner。按enter键后,侦听器将执行一些内容检查,并根据默认值将所选内容移动到下一行。
现在我可以在下面的字段中输入一些值,我想知道为什么光标在这个位置不闪烁。
在下一个回车键笔划之后,所选内容再次下移一行,但是我的侦听器不知道正确的单元格。我想知道,在按下回车键后,如何将所选内容移到下面单元格中的文本字段。
public class SMM_MyNumberEditor extends AbstractCellEditor implements TableCellEditor, ActionListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
private double _number;
public SMM_MyNumberEditor()
{
_number = 0.0;
}
public Object getCellEditorValue()
{
return _number;
}
public void actionPerformed(ActionEvent e)
{
JTextField field = (JTextField) e.getSource();
_number = Double.parseDouble(field.getText());
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
JTextField field = new JTextField();
field.addKeyListener(new KeyListener()
{
@Override
public void keyTyped(KeyEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e)
{
}
@Override
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER)
{
String text = field.getText();
if (text.isEmpty())
{
return;
}
try
{
text =text.replaceAll(",", ".");
if (!text.equals("-"))
{
double wert = Double.parseDouble(text);
_number = wert;
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Es dürfen nur Zahlen eingegeben werden", "Ungültige Eingabe", JOptionPane.ERROR_MESSAGE);
field.setText("0");
}
}
}
});
if (isSelected)
{
field.setBackground(table.getSelectionBackground());
}
else
{
field.setBackground(table.getSelectionForeground());
}
return field;
}
}
暂无答案!
目前还没有任何答案,快来回答吧!