使用Swing时的Java方法 - 可以在同一个类中的另一个事件方法中调用event方法吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Swing时的Java方法 - 可以在同一个类中的另一个事件方法中调用event方法吗?相关的知识,希望对你有一定的参考价值。

所以我是java新手,现在使用swing。我有一个方法(第一种方法),当我键入特定的jField和释放键时,它会执行一些代码。我也有jCheckBox,所以当我勾选或取消勾选复选框它会做一些动作,这是第二种方法。

所以当我勾选或取消勾选复选框时,我想要调用我的第一个方法,第一个方法必须执行它的代码。但似乎我有问题,我不能出于某种原因调用这种方法。

Part of first method

   private void bruttoTextFieldKeyReleased(java.awt.event.KeyEvent evt) {  
       //code
}

Second method trying to call first method

private void pensionCheckBoxStateChanged(javax.swing.event.ChangeEventevt) {                                             
       bruttoTextFieldKeyReleased();
}    

Those methods were created with this menu

这是暗示,但我不确定我需要做什么,它需要一些KeyEvent?我只想从另一个方法中启动一个方法,而不是放任何值而不返回。

Error Hint

答案

要扩展Luvy的评论,并使用您的代码将其转换为答案。

现在,第一个方法采用KeyEvent,如下所示:

private void bruttoTextFieldKeyReleased(java.awt.event.KeyEvent evt) {
  double salaryBrutto = Double.parseDouble(bruttoTextField.getText());

  double taxPensRound;
  if (pensionCheckBox.isSelected()) {
    double taxPens = salaryBrutto * TAX_PENS;
    //more code

通过屏幕截图,看起来您很可能是从GUI构建器自动创建的,并且没有使用KeyEvent evt参数。如果没有传入KeyEvent,您将无法调用此方法,这就是为什么pensionCheckBoxStateChanged无法调用它。

Luvy的建议是用bruttoTextFieldKeyReleased按钮创建一个新方法,所以后面你会有两种方法:

private void bruttoTextFieldKeyReleased(java.awt.event.KeyEvent evt) {
  calculatePensionInformation();
  //maybe do something with evt later on
}

private void calculatePensionInformation() {
  double salaryBrutto = Double.parseDouble(bruttoTextField.getText());

  double taxPensRound;
  if (pensionCheckBox.isSelected()) {
    double taxPens = salaryBrutto * TAX_PENS;
    //more code

}

此时,您可以将现有的第二种方法更改为:

private void pensionCheckBoxStateChanged(javax.swing.event.ChangeEventevt) {                                             
   calculatePensionInformation();
}    

并且它会按预期工作,因为calculatePensionInformation不需要参数,并且您没有传递任何参数。

以上是关于使用Swing时的Java方法 - 可以在同一个类中的另一个事件方法中调用event方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

java swing 事件问题

在swing组件中显示时所使用的字体可以用啥方法来设置

Java图形界面Swing

《Java Swing》第2节:窗体的创建

含有Swing的java项目在Eclipse中可以正常运行,但是打包后不能正常运行

用java编写的swing程序。如何在主界面中实现刷新的功能,就是让主界面的组件刷新