В принципе, у меня есть этот код, чтобы напечатать метку ячейки каждой вершины, которую я кликнул на jgraph. Я пытаюсь сохранить значения ячеек в массив строк. Я попытался это:Преобразование значения метки вершины jgraph в массив строк
graphComponent.getGraphControl().addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
ArrayList<Object> objarr = new ArrayList<Object>() ;
if (e.getButton() == 3 && e.getClickCount() == 1) {
long x = e.getX();
long y = e.getY();
Object cell = graphComponent.getCellAt((int) x, (int)y);
System.out.println(graph.convertValueToString(cell));
objarr.add(cell);
}
String[] stringArray = objarr.toArray(new String[100]) ;
}
});
}
я получаю эти ошибки, когда я пытаюсь нажать на вершину:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.toArray(Unknown Source)
at GUIquery$2.mousePressed(GUIquery.java:498)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Каждый объект имеет ToString) 'метод' (. Вы должны переопределить это, если оно уже не ведет себя так, как вы хотите, и вызовите 'cell.toString()'. В противном случае для доступа к этому полю должно быть поле для метки или метода типа getLabel(). Помимо этого наблюдения, очень неясно, откуда вы пришли с этим вопросом. Например, переменная 'graphComponent' не зависит от этого раздела кода, только от' graph'. И вы указали локальную переменную с 'mxGraphComponent graphComponent', которая блокирует область внешнего' graphComponent' (вызывается '' getGraphControl() ') – clwhisk
Вы правы. Не знаю, почему они остались там. Удалили их обоих. Я попытался сохранить значения ячейки, нажатые в графе, в массив строк, но он не работал. Как я мог это достичь? – user2598911
Ну, это ваш график ... Я могу сказать, потому что он не соответствует соглашению об именах для классов Java. Все, что вам нужно, чтобы сохранить значение в массив строк, это строка. Следуя подсказкам отладки и задавая четко заданный вопрос, вы получаете одинаковые навыки. Удачи. – clwhisk