JAVA Swing组件不会出现
由于某种原因,当我运行程序时,一些Swing组件没有出现,我不知道为什么。只显示乘法标签、乘法按钮、总计标签和停止按钮。其余的都不行
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BabyCalculatorFinal extends JFrame{
private JLabel AdditionLabel;
private JTextField AdditionField;
private JButton AdditionButton;
private JPanel Multiplication;
private JLabel MultiplicationLabel;
private JTextField MultiplicationField;
private JButton MultiplicationButton;
private JPanel Total;
private JLabel TotalLabel;
private JTextField TotalField;
JButton StopButton;
public BabyCalculatorFinal(){
setDefaultCloseOperation(EXIT_ON_CLOSE);// 1st thing to do
setName("Baby Calculator Final"); // 2nd thing to do
setLayout(new GridLayout(3,0)); //sets grid layout for the entire thing with 3 rows
// Create Action Event
BabyCalculatorListener Listener = new BabyCalculatorListener();
//Addition
//Addition Set Layout
JPanel Addition = new JPanel(new BorderLayout());
//Addition Features
AdditionLabel = new JLabel("Amount to add"); //Create label
AdditionField = new JTextField(10);
AdditionButton = new JButton("Add");
//Organize Addition Panel
Addition.add(AdditionLabel, BorderLayout.WEST);//IMPORTANT FORMAT
Addition.add(AdditionLabel, BorderLayout.CENTER);
Addition.add(AdditionButton, BorderLayout.EAST);
//Add addition Panel to Frame
add(Addition);
AdditionButton.addActionListener(Listener);
//Multiplictation
//Multiplication Set Layout
Multiplication = new JPanel();
Multiplication.setLayout(new BorderLayout());//Trying a different way of setting the layout
//Multiplication Features
MultiplicationLabel = new JLabel("Amount to Multiply"); //Create label
MultiplicationField = new JTextField(10);
MultiplicationButton = new JButton("Multiply");
//Organize Multiplication Panel
Addition.add(MultiplicationLabel, BorderLayout.WEST);
Addition.add(MultiplicationLabel, BorderLayout.CENTER);
Addition.add(MultiplicationButton, BorderLayout.EAST);
//Add Multiplication Panel to Frame
add(Multiplication);
MultiplicationButton.addActionListener(Listener);
//Total
Total = new JPanel(new FlowLayout(10));
TotalLabel = new JLabel("Total");
TotalField = new JTextField();
TotalField.setText("0.0");
TotalField.setVisible(false);
StopButton = new JButton("Stop");
Total.add(TotalLabel);
Total.add(TotalField);
Total.add(StopButton);
//Add Total Panel to Frame
add(Total);
pack();
setVisible(true);
}
public static void main(String[] args){
JFrame myFrame = new BabyCalculatorFinal();
}
public class BabyCalculatorListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String totalText = TotalField.getText();
double total = Double.parseDouble(totalText);
if (e.getSource() == AdditionButton){
String additionText = AdditionField.getText();
double addition = Double.parseDouble(additionText);
total += addition;
}
else{
String multiplicationText = MultiplicationField.getText();
double multiplication = Double.parseDouble(multiplicationText);
total += multiplication;
}
TotalField.setText(total + "");
}
}
}
# 1 楼答案
你的代码全是打字错误(?),例如,您将
AdditionLabel
两次添加到JPanel
中,而不是添加AdditionLabel
和AdditionField
。创建Multiplication
面板后,您不会使用它,而是覆盖Addition
面板的内容。添加组件的正确代码段应该是(我更改了变量名以符合Java约定):