使用Swing时的Java方法 - 可以在同一个类中的另一个事件方法中调用event方法吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Swing时的Java方法 - 可以在同一个类中的另一个事件方法中调用event方法吗?相关的知识,希望对你有一定的参考价值。
所以我是java新手,现在使用swing。我有一个方法(第一种方法),当我键入特定的jField和释放键时,它会执行一些代码。我也有jCheckBox,所以当我勾选或取消勾选复选框它会做一些动作,这是第二种方法。
所以当我勾选或取消勾选复选框时,我想要调用我的第一个方法,第一个方法必须执行它的代码。但似乎我有问题,我不能出于某种原因调用这种方法。
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?我只想从另一个方法中启动一个方法,而不是放任何值而不返回。
要扩展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方法吗?的主要内容,如果未能解决你的问题,请参考以下文章