当前位置: 首页 > 知识库问答 >
问题:

单击按钮时从另一个JFrame调用JFrame方法

年高洁
2023-03-14

我在stack overflow上搜索了我的问题的类似答案,但都没有帮助我。

所以我的问题是:

我有一个名为main_window的主JFrame,它上有一个JTable和一个JButton。单击该按钮后,将打开另一个JFrame(update_window),我可以从中更新表。Update_Window JFrame有两个文本字段和一个submit按钮。

简单地说,我想从update_windowJFrame更新main_windown中的JTable。在TextFields中键入内容并使用按钮提交后,数据应该出现在main_windown的JTable中,但它不起作用。

这是我的main_windowJFrame:

    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_windowJFrame:

    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();,因为这会创建一个新实例,但它没有将数据添加到正确的窗口或类似的东西。

共有1个答案

杭英杰
2023-03-14

是的,你是对的。行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_wind->mainwind,update_wind->updatewind

当我的建议不能解决您的问题时,请提供一个[mcve]以便我们能更好地识别您的问题。

 类似资料:
  • 很多人可能都知道,我是一个完全的Java新手。我已经尝试过对此进行研究(通过阅读StackOverflow上的其他帖子,在谷歌上搜索,并询问一位不太熟悉java的朋友),但我无法理解。答案可能很清楚也很简单,但我对此视而不见。我试图从不同的帧中处理JFrame。 我的应用程序应该按如下方式工作: 帧X有一个按钮,按下时:生成帧Y 帧Y有一个按钮,按下时:生成帧Z Frame Z有一个按钮,按下时:

  • 问题内容: 众所周知,我是一名完全的Java新手。我已经尝试过对此进行研究(通过阅读StackOverflow上的其他文章,谷歌搜索,并问一个不太喜欢Java新手的朋友),但我不知道。答案可能是明确而容易的,但我对此视而不见。我正在尝试从其他框架中放置A。 我的应用程序应该按以下方式工作: 按下框架X时有一个按钮:产生框架Y 框架Y有一个按钮,当按下时:产生框架Z 按下框架Z时有一个按钮:在放置框

  • 我一直在工作的swings框架,其中有一个卡片布局面板在大型机。 我总共有20个jpanels添加到我的卡片布局面板中,在这20个面板中,有3个面板是由一个按钮组成的,点击这个按钮会加载另一个JFrame。当我使用IDE运行这个GUI时,它工作得很好,但是,当我运行jar文件时,在三种情况中的两种情况下,当单击按钮时,它不显示帧。 这是我正在为ButtonListener使用的代码。这个按钮只在一

  • 使用没有任何按钮的计时器从另一个JFrame调用:时间减少,然后打开没有任何按钮的另一个JFrame。请帮忙。在netbeans中使用

  • 我试图在点击按钮时“打开”一个不同的JFrame窗口(在本例中是“尺寸”按钮),就像在浏览菜单时一样。我有两个窗口,主函数和ActionListener作为单独的类。当我点击应该将我重定向到另一个窗口的按钮时,它只会显示一个错误,而不会隐藏第一个窗口并显示第二个窗口。错误是: "异常线程"AWT-EventQueue-0"java.lang.ClassCastExc0019:类javax.swin

  • 可以使用另一个jFrame的按钮来处理jFrame吗?如果可能的话,这些代码在netbeans中应该是什么样子?