簡體   English   中英

JAVA Swing組件不會顯示

[英]JAVA Swing Components won't show up

由於某些原因,當我運行該程序時,某些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 + "");
    }
}

}

您的代碼是充滿錯別字的(?),比如你要添加AdditionLabel兩次到JPanel而不是添加AdditionLabelAdditionField 並且您在創建Multiplication面板后沒有使用它,而是覆蓋了Addition面板的內容。 添加組件的正確代碼段應該是(我更改了變量名稱以符合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