簡體   English   中英

在單擊按鈕時從另一個JFrame調用JFrame方法

[英]Calling a JFrame method from another JFrame on Button Click

我在堆棧溢出中搜索了類似的問題答案,但沒有一個對我有幫助。

所以我的問題是以下幾點:

我有一個名為Main_Window的主JFrame,在其上有一個JTable和JButton。 單擊按鈕后,將打開另一個JFrame( Update_Window ),可以從中更新表。 Update_Window JFrame具有兩個TextField和一個SUBMIT按鈕。

簡要地說,我想從Update_Window JFrame更新Main_Window JTable。 在TextFields中鍵入某些內容並使用Button提交后,數據應出現在Main_Window的JTable中,但它不起作用。

這是我的Main_Window JFrame:

    private void updateBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Update_Window newWindow = new Update_Window();
        newWindow.setVisible(true);
        newWindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
    }  

    public void putDataIntoTable(Integer data, int row, int col) {
        jTable1.setValueAt(data,row,col);
    }

這是我的Update_Window JFrame:

    private void submitBtnActionPerformed(java.awt.event.ActionEvent evt) {                                      
        quantity = Integer.parseInt(quantityTextField.getText());
        price = Integer.parseInt(priceTextField.getText());
        Main_Window mw = new Main_Window();
        mw.putDataIntoTable(price,3,2);
    }     

我認為我的問題在這里Main_Window mw = new Main_Window(); ,因為這會創建一個新的實例,並且不會將數據添加到正確的窗口或類似的窗口中。

是的,你是對的。 Main_Window mw = new Main_Window(); 肯定是錯的。

更好的解決方案是:

public class UpdateWindow extends JFrame {
    private final MainWindow mainWindow;
    public UpdateWindow(MainWindow mainWin) {
        mainWindow = mainWin;
    }
    private void submitBtnActionPerformed(java.awt.event.ActionEvent evt) {                                      
        quantity = Integer.parseInt(quantityTextField.getText());
        price = Integer.parseInt(priceTextField.getText());
        mainWindow.putDataIntoTable(price,3,2);
    }     
}

另外,您需要更正UpdateWindow的構造函數調用

private void updateBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
    UpdateWindow newWindow = new UpdateWindow(this);
    newWindow.setVisible(true);
    newWindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
}  

請注意:我更正了Java命名約定所建議的類名。 Main_Window > MainWindowUpdate_Window > UpdateWindow

如果我的建議不能解決您的問題,請提供[mcve],以便我們更好地確定您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM