Java 使用 Swing 时的方法 - 可以在同一 class 中调用另一个事件方法中的事件方法吗?
Java Methods when working with Swing - It is possible to call event method in another event method in same class?
所以我是 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 不需要参数,而您也没有传入任何参数。
所以我是 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 不需要参数,而您也没有传入任何参数。