получение недопустимого аргумента исключения при добавлении JSpinner в JTable - PullRequest
0 голосов
/ 23 июня 2019

поэтому я добавляю JSpinner в ячейку Jtable с использованием классов AbstractCellEditor и TableCellEditor Класс mt SpinnerEditor довольно прост, а код приведен ниже:

public class SpinnerEditor extends AbstractCellEditor implements TableCellEditor {

    final JSpinner spinner;
    SpinnerEditor(){
        spinner = new JSpinner();
    }

    @Override
    public Object getCellEditorValue() {
        return spinner.getValue();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        spinner.setValue(value);
        return spinner ;
    }

    @Override
    public boolean isCellEditable(EventObject evt){

    return true;
    }

}

Проблема в том, что я получаю недопустимый аргумент Исключение, когда я пытаюсь отредактировать ячейку, щелкнув по ней как:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal value
    at javax.swing.SpinnerNumberModel.setValue(SpinnerNumberModel.java:443)
    at javax.swing.JSpinner.setValue(JSpinner.java:354)
    at timetablemgmt.SpinnerEditor.getTableCellEditorComponent(SpinnerEditor.java:39)
    at javax.swing.JTable.prepareEditor(JTable.java:5778)
    at javax.swing.JTable.editCellAt(JTable.java:3512)
    at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1108)
    at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1038)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
    at java.awt.Component.processMouseEvent(Component.java:6530)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4523)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Я не могу понять, в чем проблема! заранее спасибо

1 Ответ

0 голосов
/ 24 июня 2019

хорошо, я получил ответ на свой вопрос, как когда я устанавливаю значение как spinner.setValue(value) в методе:

public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        spinner.setValue(value);
        return spinner ;
    }

значение по умолчанию стало равным нулю, поэтому возникло исключение, я изменил этот метод как и его исправная работа:

public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        if(value == null)
           spinner.setValue(0);
        else
           spinner.setValue(value);
        return spinner ;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...