спасибо.
а, как применить это в моём случае? у меня вот , что получается, когда жму на ячейки в колонке link:
| Код | java.net.URISyntaxException: Illegal character in opaque part at index 2: c:\test.txt at java.net.URI$Parser.fail(URI.java:2825) at java.net.URI$Parser.checkChars(URI.java:2998) at java.net.URI$Parser.parse(URI.java:3035) at java.net.URI.<init>(URI.java:595) at jTable$1.mousePressed(jTable.java:33) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.Component.processMouseEvent(Component.java:6105) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:5873) at java.awt.Container.processEvent(Container.java:2105) at java.awt.Component.dispatchEventImpl(Component.java:4469) at java.awt.Container.dispatchEventImpl(Container.java:2163) at java.awt.Component.dispatchEvent(Component.java:4295) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4122) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055) at java.awt.Container.dispatchEventImpl(Container.java:2149) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4295) at java.awt.EventQueue.dispatchEvent(EventQueue.java:604) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
|
и вот ещё:
| Код | java.io.IOException: Failed to show URI:/home/slaine/Desktop/0100GS-GettingStarted-Ru.pdf at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:93) at sun.awt.X11.XDesktopPeer.browse(XDesktopPeer.java:82) at java.awt.Desktop.browse(Desktop.java:386) at jTable$1.mousePressed(jTable.java:33) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.Component.processMouseEvent(Component.java:6105) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:5873) at java.awt.Container.processEvent(Container.java:2105) at java.awt.Component.dispatchEventImpl(Component.java:4469) at java.awt.Container.dispatchEventImpl(Container.java:2163) at java.awt.Component.dispatchEvent(Component.java:4295) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4122) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055) at java.awt.Container.dispatchEventImpl(Container.java:2149) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4295) at java.awt.EventQueue.dispatchEvent(EventQueue.java:604) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
|
вот, как я это записал:
| Код | import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.*; import java.net.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; class jTable { JTable jtab; String[] headings = { "name", "link" }; Object[][] data = { { "test", "c:\\test.txt" }, { "test2", "c:\\test2.txt" }, { "test3", "c:\\test3.txt" }, { "test4", "c:\\test4.txt" }, }; jTable (){ JFrame jfrm = new JFrame("JTable"); jfrm.getContentPane().setLayout(new FlowLayout()); jfrm.setBounds(400, 350, 500, 160); jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jtab = new JTable(data, headings); JScrollPane jscrl = new JScrollPane(jtab); jtab.setPreferredScrollableViewportSize(new Dimension(480, 80));
jtab.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { if (jtab.getSelectedColumn()==1) { try { String url = jtab.getValueAt(jtab.getSelectedRow(), jtab.getSelectedColumn()).toString(); Desktop.getDesktop().browse(new URI(url)); } catch (IOException e1) { e1.printStackTrace(); } catch (URISyntaxException e1) { e1.printStackTrace(); } } } });
jfrm.getContentPane().add(jscrl); jfrm.setVisible(true); } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){public void run(){new jTable();}}); } }
|
|