JLabel没有出现在小组

时间:2015-11-16 19:43:08

标签: java swing user-interface jlabel

对于课程我应该创建一个应用程序,首先让你选择你想要计算的值,然后要求输入相应的信息。然后当你点击“计算”时,它应该显示答案。出于某种原因,我应该显示答案的JLabel没有显示出来。我一直在寻找一个解决方案,但是我做的每一件事,点击“计算”后都没有出现。我是新手,请帮忙:(

package decay.application;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class DecayApplication implements ActionListener {

JFrame frame;
JPanel content;
JLabel prompt1, prompt2, prompt3, prompt4, displayFinal, displayIntitial, displayConstant, choose;
JTextField enterFinal, enterInitial, enterConstant, enterElapsed;
JButton finButton, inButton, conButton, calculate1, calculate2, calculate3;

 public DecayApplication(){

frame = new JFrame("Decay Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

content = new JPanel();
content.setLayout(new GridLayout(0, 2, 10, 5));
content.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

choose = new JLabel("Which would you like to calculate?");
content.add(choose);

finButton = new JButton("Final Amount");
finButton.setActionCommand("finalAmount");
finButton.addActionListener(this);
content.add(finButton);

inButton = new JButton("Initial Amount");
inButton.setActionCommand("initialAmount");
inButton.addActionListener(this);
content.add(inButton);

conButton = new JButton("Constant");
conButton.setActionCommand("constant");
conButton.addActionListener(this);
content.add(conButton);

frame.setContentPane(content);

frame.pack();
frame.setVisible(true);
}

public static void main(String[] args){new DecayApplication();}

public void actionPerformed(ActionEvent event) {

String clicked1 = event.getActionCommand();
String clicked2 = event.getActionCommand();

if (clicked1.equals("finalAmount")) {
prompt1 = new JLabel("Enter the initial amount:");
content.add(prompt1);

enterInitial = new JTextField(10);
content.add(enterInitial);

prompt2 = new JLabel("What's the constant?:");
content.add(prompt2);

enterConstant = new JTextField(10);
content.add(enterConstant);

prompt3 = new JLabel("How many years have elapsed?:");
content.add(prompt3);

enterElapsed = new JTextField(10);
content.add(enterElapsed);

calculate1 = new JButton("Calculate");
calculate1.setActionCommand("Calculate");
calculate1.addActionListener(this);
content.add(calculate1);

displayFinal = new JLabel(" ");
displayFinal.setForeground(Color.red);
content.add(displayFinal);

frame.pack();

if (clicked2.equals("Calculate")){

    double finalAmount;
String e1 = enterInitial.getText();
String e2 = enterConstant.getText();
String e3 = enterElapsed.getText();

finalAmount = (Double.parseDouble(e1) + 2.0);

displayFinal.setText(Double.toString(finalAmount));
}
}
}

private static void runGUI() {
    JFrame.setDefaultLookAndFeelDecorated(true);

    DecayApplication decay = new DecayApplication();
}
}

1 个答案:

答案 0 :(得分:0)

这是您的方法actionPerformed

public void actionPerformed(ActionEvent event) {

String clicked1 = event.getActionCommand();
String clicked2 = event.getActionCommand();

if (clicked1.equals("finalAmount")) {
prompt1 = new JLabel("Enter the initial amount:");
content.add(prompt1);

enterInitial = new JTextField(10);
content.add(enterInitial);

prompt2 = new JLabel("What's the constant?:");
content.add(prompt2);

enterConstant = new JTextField(10);
content.add(enterConstant);

prompt3 = new JLabel("How many years have elapsed?:");
content.add(prompt3);

enterElapsed = new JTextField(10);
content.add(enterElapsed);

calculate1 = new JButton("Calculate");
calculate1.setActionCommand("Calculate");
calculate1.addActionListener(this);
content.add(calculate1);

displayFinal = new JLabel(" ");
displayFinal.setForeground(Color.red);
content.add(displayFinal);

frame.pack();

//here should the if-loop end, because here is the end of instructions which should be called after clicking on the button
}
//and here the second if-loop
if (clicked2.equals("Calculate")){

    double finalAmount;
String e1 = enterInitial.getText();
String e2 = enterConstant.getText();
String e3 = enterElapsed.getText();

finalAmount = (Double.parseDouble(e1) + 2.0);

displayFinal.setText(Double.toString(finalAmount));
}