[英]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
> MainWindow
, Update_Window
> UpdateWindow
。
如果我的建議不能解決您的問題,請提供[mcve],以便我們更好地確定您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.