Java “线程中的异常”;“主要”;IllegalArgumentException:添加容器';他是自己的父母
我刚开始学习编程,正在尝试创建一个计算20%所得税的程序。程序可以编译,但不断出现错误。错误状态 线程“main”java.lang.IllegalArgumentException中的异常:将容器的父级添加到自身 我不明白该改变什么Java “线程中的异常”;“主要”;IllegalArgumentException:添加容器';他是自己的父母,java,swing,Java,Swing,我刚开始学习编程,正在尝试创建一个计算20%所得税的程序。程序可以编译,但不断出现错误。错误状态 线程“main”java.lang.IllegalArgumentException中的异常:将容器的父级添加到自身 我不明白该改变什么 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; public class IncomeTax extends JFrame { /
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
public class IncomeTax extends JFrame
{
// declarations
Color black = new Color(0, 0, 0);
Color white = new Color(255, 255, 255);
Color light_gray = new Color(192, 192, 192);
DecimalFormat currency;
JLabel grossIncomeJLabel;
JTextField grossIncomeJTextField;
JLabel amountTaxedJLabel;
JTextField amountTaxedJTextField;
JTextField currencyJTextField;
JLabel amountDeductedJLabel;
JTextField amountDeductedJTextField;
JLabel netIncomeJLabel;
JTextField netIncomeJTextField;
JButton enterJButton;
JButton clearJButton;
double grossIncome;
double amountTaxed;
double amountDeducted;
double netIncome;
public IncomeTax()
{
createUserInterface();
}
public void createUserInterface()
{
Container contentPane = getContentPane();
contentPane.setBackground(white);
contentPane.setLayout(null);
// initialize components
// input
grossIncomeJLabel = new JLabel ();
grossIncomeJLabel.setBounds (50, 20, 150, 20);
grossIncomeJLabel.setFont(new Font("Default", Font.PLAIN, 12));
grossIncomeJLabel.setText ("Enter Gross Income:");
grossIncomeJLabel.setForeground(black);
grossIncomeJLabel.setHorizontalAlignment(JLabel.LEFT);
contentPane.add(grossIncomeJLabel);
grossIncomeJTextField = new JTextField();
grossIncomeJTextField.setBounds(200, 20, 100, 20);
grossIncomeJTextField.setFont(new Font("Default", Font.PLAIN, 12));
grossIncomeJTextField.setHorizontalAlignment(JTextField.CENTER);
grossIncomeJTextField.setForeground(black);
grossIncomeJTextField.setBackground(white);
grossIncomeJTextField.setEditable(true);
contentPane.add(grossIncomeJTextField);
//outputs
amountTaxedJLabel = new JLabel();
amountTaxedJLabel.setBounds(50, 50, 150, 20);
amountTaxedJLabel.setFont(new Font("Default", Font.PLAIN, 12));
amountTaxedJLabel.setText("Amount Taxed");
amountTaxedJLabel.setForeground(black);
amountTaxedJLabel.setHorizontalAlignment(JLabel.LEFT);
amountTaxedJLabel.add(amountTaxedJLabel);
amountTaxedJTextField = new JTextField();
amountTaxedJTextField.setBounds(200, 50, 100, 20);
amountTaxedJTextField.setFont(new Font("Default", Font.PLAIN, 12));
amountTaxedJTextField.setHorizontalAlignment(JTextField.CENTER);
amountTaxedJTextField.setForeground(black);
amountTaxedJTextField.setBackground(white);
amountTaxedJTextField.setEditable(false);
contentPane.add(amountTaxedJTextField);
amountDeductedJLabel = new JLabel();
amountDeductedJLabel.setBounds(50, 80, 150, 20);
amountDeductedJLabel.setFont(new Font("Default", Font.PLAIN, 12));
amountDeductedJLabel.setText("Amount Deducted:");
amountDeductedJLabel.setForeground(black);
amountDeductedJLabel.setHorizontalAlignment(JLabel.LEFT);
contentPane.add(amountDeductedJLabel);
amountDeductedJTextField = new JTextField();
amountDeductedJTextField.setBounds(200, 80, 100, 20);
amountDeductedJTextField.setFont(new Font("Default", Font.PLAIN, 12));
amountDeductedJTextField.setHorizontalAlignment(JTextField.CENTER);
amountDeductedJTextField.setForeground(black);
amountDeductedJTextField.setBackground(white);
amountDeductedJTextField.setEditable(false);
contentPane.add(amountDeductedJTextField);
netIncomeJLabel = new JLabel();
netIncomeJLabel.setBounds(50, 110, 150, 20);
netIncomeJLabel.setFont(new Font("Default", Font.PLAIN, 12));
netIncomeJLabel.setText("Net Income:");
netIncomeJLabel.setForeground(black);
netIncomeJLabel.setHorizontalAlignment(JLabel.LEFT);
contentPane.add(netIncomeJLabel);
netIncomeJTextField = new JTextField();
netIncomeJTextField.setBounds(200, 110, 100, 20);
netIncomeJTextField.setFont(new Font("Default", Font.PLAIN, 12));
netIncomeJTextField.setHorizontalAlignment(JTextField.CENTER);
netIncomeJTextField.setForeground(black);
netIncomeJTextField.setBackground(white);
netIncomeJTextField.setEditable(false);
contentPane.add(netIncomeJTextField);
// control
enterJButton = new JButton();
enterJButton.setBounds(50, 210, 100, 20);
enterJButton.setFont(new Font("Default", Font.PLAIN, 12));
enterJButton.setText("Enter");
enterJButton.setForeground(black);
enterJButton.setBackground(white);
contentPane.add(enterJButton);
enterJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
enterJButtonActionPerformed(event);
}
}
);
clearJButton = new JButton();
clearJButton.setBounds(200, 210, 100, 20);
clearJButton.setFont(new Font("Default", Font.PLAIN, 12));
clearJButton.setText("Clear");
clearJButton.setForeground(black);
clearJButton.setBackground(white);
contentPane.add(clearJButton);
clearJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
clearJButtonActionPerformed(event);
}
}
);
// set properties of application’s window
setTitle("Income Tax"); // set title
setSize( 400, 400 ); // set window size
setVisible(true); // display window
}
// main method
public static void main(String[] args)
{
IncomeTax application = new IncomeTax();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void enterJButtonActionPerformed(ActionEvent event)
{
// get input
grossIncome = Double.parseDouble(grossIncomeJTextField.getText());
// process data
final double Tax_Rate = .20;
amountTaxed = Tax_Rate;
amountDeducted = grossIncome * Tax_Rate;
netIncome = grossIncome - amountDeducted;
//display results
currency = new DecimalFormat("$0.00");
amountTaxedJTextField.setText("" + currency.format(amountTaxed));
amountDeductedJTextField.setText("" + currency.format(amountDeducted));
netIncomeJTextField.setText("" + currency.format(netIncome));
}
public void clearJButtonActionPerformed(ActionEvent event)
{
grossIncomeJTextField.setText("");
grossIncomeJTextField.requestFocusInWindow();
amountTaxedJTextField.setText("");
amountDeductedJTextField.setText("");
netIncomeJTextField.setText("");
}
}
这里
我想你是说
contentPane.add(amountTaxedJLabel);
在前面的示例中,您正在向自身添加视图。
在后面的示例中,您将其添加到内容窗格中。此处
我想你是说
contentPane.add(amountTaxedJLabel);
在前面的示例中,您正在向自身添加视图。
在后面的示例中,您将其添加到内容窗格中。此处
我想你是说
contentPane.add(amountTaxedJLabel);
在前面的示例中,您正在向自身添加视图。
在后面的示例中,您将其添加到内容窗格中。此处
我想你是说
contentPane.add(amountTaxedJLabel);
在前面的示例中,您正在向自身添加视图。
在后面的部分中,您将其添加到内容窗格。糟糕的标题!!!请修正我已经修正了你的问题标题。今后,请注意使您的问题标题尽可能简洁,但也尽可能提供信息。请注意,异常会确切地告诉您问题在哪一行,以及您做错了什么;一点也不神秘。你在给自己添加一些东西,不应该这样做。当你说“符合”时,你的意思是“编译”。在错误日志中,它还会告诉您发生错误的行。你能发布那个行号吗?如果你能指出是哪一行导致了异常,这也是一个很大的帮助。Stacktraces通常包括它们,如果没有这些信息,通常很难判断问题出在哪里。使用像
double
这样的浮点类型来表示货币值是一个非常糟糕的主意。您应该将它们存储为整数,或者使用Java的BigDecimal
类。可怕的标题!!!请修正我已经修正了你的问题标题。今后,请注意使您的问题标题尽可能简洁,但也尽可能提供信息。请注意,异常会确切地告诉您问题在哪一行,以及您做错了什么;一点也不神秘。你在给自己添加一些东西,不应该这样做。当你说“符合”时,你的意思是“编译”。在错误日志中,它还会告诉您发生错误的行。你能发布那个行号吗?如果你能指出是哪一行导致了异常,这也是一个很大的帮助。Stacktraces通常包括它们,如果没有这些信息,通常很难判断问题出在哪里。使用像double
这样的浮点类型来表示货币值是一个非常糟糕的主意。您应该将它们存储为整数,或者使用Java的BigDecimal
类。可怕的标题!!!请修正我已经修正了你的问题标题。今后,请注意使您的问题标题尽可能简洁,但也尽可能提供信息。请注意,异常会确切地告诉您问题在哪一行,以及您做错了什么;一点也不神秘。你在给自己添加一些东西,不应该这样做。当你说“符合”时,你的意思是“编译”。在错误日志中,它还会告诉您发生错误的行。你能发布那个行号吗?如果你能指出是哪一行导致了异常,这也是一个很大的帮助。Stacktraces通常包括它们,如果没有这些信息,通常很难判断问题出在哪里。使用像double
这样的浮点类型来表示货币值是一个非常糟糕的主意。您应该将它们存储为整数,或者使用Java的BigDecimal
类。可怕的标题!!!请修正我已经修正了你的问题标题。今后,请注意使您的问题标题尽可能简洁,但也尽可能提供信息。请注意,异常会确切地告诉您问题在哪一行,以及您做错了什么;一点也不神秘。你在给自己添加一些东西,不应该这样做。当你说“符合”时,你的意思是“编译”。在错误日志中,它还会告诉您发生错误的行。你能发布那个行号吗?如果你能指出是哪一行导致了异常,这也是一个很大的帮助。Stacktraces通常包括它们,如果没有这些信息,通常很难判断问题出在哪里。使用像double
这样的浮点类型来表示货币值是一个非常糟糕的主意。您应该将它们存储为整数美分,或者使用Java的BigDecimal
类。@user4059399如果这篇文章解决了您的问题,请用绿色复选标记它为正确。这将:(1)对给出正确答案的用户表示感谢,(2)帮助有类似问题的未来用户看到这个答案解决了您的问题,(3)帮助其他志愿者不要浪费时间阅读已经有答案的问题。谢谢。@user4059399如果这篇文章解决了您的问题,请用绿色复选标记将其标记为正确。这将:(1)对给出正确答案的用户表示感谢,(2)帮助有类似问题的未来用户看到这个答案解决了您的问题,(3)帮助其他志愿者不要浪费时间阅读已经有答案的问题。谢谢。@user4059399如果这篇文章解决了您的问题,请用绿色复选标记将其标记为正确。这将:(1)对给出正确答案的用户表示感谢,(2)帮助有类似问题的未来用户看到这个答案解决了您的问题,(3)帮助其他志愿者不要浪费时间阅读已经有答案的问题。谢谢。@user4059399如果这篇文章解决了您的问题,请用绿色复选标记将其标记为正确。这将:(1)对给出正确答案的用户表示感谢,(2)用simil帮助未来的用户