gpt4 book ai didi

java - Java swing 应用程序 Action 监听器中的异常

转载 作者:行者123 更新时间:2023-11-29 09:01:20 25 4
gpt4 key购买 nike

我在我的 Action 监听器中出现异常,我是这方面的新手,所以我需要帮助。

我尝试了很多方法,现在我要这样做:

JButton buttonIzracunaj = new JButton("Izra\u010Dunaj");
buttonIzracunaj.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
int danInt = Integer.parseInt(textFieldDan.getText());
int mjesecInt = Integer.parseInt(textFieldMjesec.getText());
int godinaInt = Integer.parseInt(textFieldGodina.getText());

if(danInt <= 31 && danInt > 0 && mjesecInt > 0 && mjesecInt <= 12 && godinaInt > 0)
{
int dan = danInt;
int mjesec = mjesecInt;
int godina = godinaInt;
}

String poruka = null;
if ((danInt<1) && (danInt > 31))
{
try {
throw PremaliBrojException;
} catch (Exception e) {
e.printStackTrace();
poruka = "Unijeli ste pogrešnu vrijednost.";
JOptionPane.showMessageDialog(null, poruka);
}
}
int proteiniInt = Integer.parseInt(textFieldProteini.getText());
int ugljikohidratiInt = Integer.parseInt(textFieldUgljikohidrati.getText());
int mastiInt = Integer.parseInt(textFieldMasti.getText());
int godineInt = Integer.parseInt(textFieldGodine.getText());
int masaInt = Integer.parseInt(textFieldMasa.getText());
int aktivnostInt = Integer.parseInt(textFieldDuljinaAktivnosti.getText());
int hrInt = Integer.parseInt(textFieldProsjecniHR.getText());

if(isMTrue)
{
if (godineInt > 0 && masaInt > 30 && aktivnostInt > 0 && hrInt > 0)
{
double brojKalorija = (double) (ugljikohidratiInt * 4 + proteiniInt * 4 + mastiInt * 4) - (((-55.0969 + (0.6309 * hrInt) + (0.1988 * masaInt) + (0.2017 * godineInt)) / 4.184) * aktivnostInt);

round(brojKalorija, 3, BigDecimal.ROUND_HALF_UP);
poruka = "U suficitu ste ~ " + brojKalorija + " kalorija.";
} else {
poruka = "Unijeli ste pogrešnu vrijednost.";
}
JOptionPane.showMessageDialog(null, poruka);
}
}
});
panelIzracun.add(buttonIzracunaj);

什么也没发生,它计算一切正确,但我需要有异常(exception)。我应该把它放在 Action 监听器之外吗?甚至在 initialize() 之外?

public class PremaliBrojException extends RuntimeException{
private static final long serialVersionUID = 1L;

public PremaliBrojException(String message) {
super(message);
}

最佳答案

在 actionPerformed 中处理异常或使用 Thread.setDefaultUncaughtExceptionHandler 设置默认异常处理程序。

关于java - Java swing 应用程序 Action 监听器中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17262548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com