jtable输入后选择下一个单元格

b4qexyjb  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(217)

我自己做了手机编辑。
某个列的每个单元格都包含一个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;
    }

}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题