Добрый день На форме есть таблица и панель с лэйблом. Данные в таблицу заносятся с базы постгреса. При нажатии стрелок верх и вниз происходит следующее: 1. Берется значение первой колонки таблицы из текущей строки. 2. Запускается функция постгреса. 3. Функция возвращает строку. 4. Значение строки отображается в лэйбле. код таблица | Код | private JTable getJTable() { if (jTable == null) { jTable = new JTable(); jTable.setModel(getDB()); jTable.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_UP) { kod=DB.getValueAt(jTable.getSelectedRow(),0).toString().trim(); // Берется значение первой колонки таблицы из текущей строки. closepot ();//вызов функции } } }); } return jTable; }
|
вызов модуля таблицы | Код | private database getDB() { DB = new database( "SELECT col1,col2,col3,col4 FROM table", "base", "user", "pass", "table","","",new String[]{"Код","Наименование","Адрес","Состояние"},new String[][]{{"",""},{"",""},{"",""},{"",""}}); return DB; }
|
функция | Код | подключение к серверу public static Connection getInsertConnection( String DBNAME, String USERNAME, String PASSWORD) throws Exception { Driver d1; d1 = (Driver)Class.forName("org.postgresql.Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:postgresql://"+ip+":5432/"+DBNAME, USERNAME, PASSWORD); return conn; } сама функция. private void closepot () { Connection conn; try { conn = getInsertConnection("base", "user", "pass" ); CallableStatement proc=conn.prepareCall("{?=call function(?)}"); conn.setAutoCommit(false); proc.registerOutParameter(1, Types.VARCHAR); String s1_=kod; proc.setString(2,s1_); proc.execute(); String results1 =proc.getString(1);//переменой results1 присваевается результат функции постгреса System.out.println(" rez= "+results1); //вывод переменной jLabel.setText(results1);//отображение значения переменной в jLabel. не работает proc.close(); conn.commit(); //conn.close(); } catch (Exception e1) { // TODO Автоматически созданный блок catch e1.printStackTrace(); } finally { } }
|
Проблема в следующем. Я бегаю по таблице получаю результат функции. Режим | Код | System.out.println(" rez= "+results1); |
работает, но на | Код | jLabel.setText(results1); |
выводится ошибка | Код |
java.lang.NullPointerException at Sbit.Closepotr.closepot(Closepotr.java:208) at Sbit.Closepotr.getJTable(Closepotr.java:174) at Sbit.Closepotr.getJScrollPane(Closepotr.java:131) at Sbit.Closepotr.getJSplitPane(Closepotr.java:116) at Sbit.Closepotr.getJContentPane(Closepotr.java:101) at Sbit.Closepotr.initialize(Closepotr.java:86) at Sbit.Closepotr.<init>(Closepotr.java:42) at Sbit.Zaiavki$29.actionPerformed(Zaiavki.java:2650) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:374) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:829) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:873) at java.awt.Component.processMouseEvent(Component.java:6268) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6033) at java.awt.Container.processEvent(Container.java:2045) at java.awt.Component.dispatchEventImpl(Component.java:4629) at java.awt.Container.dispatchEventImpl(Container.java:2103) at java.awt.Component.dispatchEvent(Component.java:4455) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227) at java.awt.Container.dispatchEventImpl(Container.java:2089) at java.awt.Window.dispatchEventImpl(Window.java:2517) at java.awt.Component.dispatchEvent(Component.java:4455) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649) at java.awt.EventQueue.access$000(EventQueue.java:96) at java.awt.EventQueue$1.run(EventQueue.java:608) at java.awt.EventQueue$1.run(EventQueue.java:606) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116) at java.awt.EventQueue$2.run(EventQueue.java:622) at java.awt.EventQueue$2.run(EventQueue.java:620) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) at java.awt.EventQueue.dispatchEvent(EventQueue.java:619) 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)
|
Не пойму в чем дело. Помогите пожалуйста.
--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
|