2016-09-30 61 views
0

我有一個JTable其上的內容,我已經從CSV文件中讀取。我使用以下方法,當我點擊一行時,它會打開一個新的JFrame並關閉前一個。它將顯示諸如ID,座標,寫在該表上的內容的狀態,並且如果需要可以編輯它們。例如。見下表:將數據傳遞到新的GUI

|ID |co-ordinates  | status | 
| 1 | (3,21)   | pending | 
| 2 | (4,21)   | full  | 
| 3 | (9, 12)   | empty | 

如果我點擊第1行,它會彈出的ID(1),合縱座標(3,21),並在文本字段中的地位在另一幀是可編輯的框架。我能夠執行點擊功能,但不知道如何在點擊該行時將該數據帶入下一幀。

//in location class 
table.addMouseListener(new MouseAdapter() { 
       public void mouseClicked(MouseEvent e) { 
        if (e.getClickCount() == 1) { 
        int row = table.getSelectedRow(); 
        AddEdit An = new AddEdit(); //goes to next class 
        An.setVisible(true); 
        dispose(); 
       } 
      } 
      }); 

如何利用這些數據到下一幀,單擊行的時候?

+4

*「..打開一個新的JFrame並關閉前一個。」* 1)請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/q/9554636/418556) 2)改爲使用['CardLayout'](http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html),如圖所示在[這個答案](http://stackoverflow.com/a/5786005/418556)。 –

+0

順便說一句 - 鑑於這是一個問答網站,我添加了一個實際的問題,形式爲*「如何將數據帶到下一幀,點擊該行?」*請不要忘記添加一個問題。 –

+0

yup會改變問題,謝謝你的迴應。 –

回答

4

不知道JTable有什麼類型的內容,我只能提供一個通用的解決方案。

int row = table.getSelectedRow(); 
int userID = (Integer) table.getValueAt(row, 0); 
// is co-ordinates [sic] a String or a Point? 
// You can do the same as for userID and use (row,1) to get the value 
String status = (String) table.getValueAt(row, 2) 

有了這個,你可以即創建一個Object[]和發送這的AddEdit構造或者寫一個方法getJTableObject()AddEdit類似的東西。這取決於你是否可以改變AddEdit

你也應該考慮安德魯斯的建議和使用cardLayout。有了這個,你可以使用一個ObserverPattern併發送你的對象。


另一種方法是使用JOptionPane

Object[] message = { "Please update the information:", newStatusPanel }; 
int response = JOptionPane.showConfirmDialog(null, message, "Update information", 
        JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); 

newStatusPanel根本上你把即JTextFields一個JPanel。然後用前面顯示的方法填寫JTable中的內容,當用戶點擊確定時,您更新JTable

// Do something with the result 
if (response == JOptionPane.OK_OPTION) { 
model.addRow(new Object[] { txtID.getText(), coordinates.getText(), ... }); 

這看起來是這樣的:

UpdateStatus

(PS:我會在以後更改基於文本的密碼基於散列的請無視對付密碼的這種公然不安全的方式。)

+0

感謝您的意見:)! –