简体   繁体   English

JAVA Swing组件不会显示

[英]JAVA Swing Components won't show up

For some reason some of the Swing components don't show up when I run the program and I can't figure out why. 由于某些原因,当我运行该程序时,某些Swing组件没有显示,并且我不知道为什么。 Only the multiply label, multiply button, total label, and stop button show up. 仅显示乘法标签,乘法按钮,总计标签和停止按钮。 The rest don't work. 其余的不起作用。

 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 + "");
    }
}

} }

Your code is full of typos (?), for example you're adding AdditionLabel twice to the JPanel instead of adding AdditionLabel and AdditionField . 您的代码是充满错别字的(?),比如你要添加AdditionLabel两次到JPanel而不是添加AdditionLabelAdditionField And you're not using the Multiplication panel after creating it but instead overriding the contents of the Addition panel. 并且您在创建Multiplication面板后没有使用它,而是覆盖了Addition面板的内容。 The corrected snippet that adds the components should be (I changed the variable names to conform to Java conventions): 添加组件的正确代码段应该是(我更改了变量名称以符合Java约定):

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(additionField, BorderLayout.CENTER); // instead of additionLabel
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
multiplication.add(multiplicationLabel, BorderLayout.WEST);   // instead of Addition
multiplication.add(multiplicationField, BorderLayout.CENTER);
multiplication.add(multiplicationButton, BorderLayout.EAST);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM