私は、Javaのコンボボックスから選択された5つの異なる身体活動に基づいて消費カロリーを計算する小さなプログラムを作成しています。ユーザーには、ボウリング、アーチェリー、ラクロス、レスリング、ペイントの5つのオプションがあります。これは、与えられた数値が計算されたWebサイトです。ユーザーは、体重と運動時間を分単位または時間単位で入力します。計算を押すと、消費カロリーの合計が表示されます。
http://www.nutristrategy.com/activitylist4.htm
私の問題は、選択に基づいてフィールドを更新する方法がわからないことです。つまり、選択を待機し、式を更新して、体重に基づいて消費カロリーを計算するメソッドを作成する必要があります。どうすればこれを行うことができますか?「アーチェリーが選択されていて、ウェイトテキストボックスに数字がある場合」というif elseステートメントを作成しますか?次に、この式を使用しますか?コンボボックスからの選択を確認する方法がわかりません。
これが私のコードです。
import java.awt.Component;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import net.miginfocom.swing.MigLayout;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class calorie extends JFrame {
public calorie() {
JLabel titleLabel = new JLabel("Calories Burned during excercise");
titleLabel.setFont(new Font("Serif", Font.BOLD, 20));
titleLabel.setForeground(Color.blue);
final JLabel distLabel = new JLabel("Choose an Activity");
final JTextField distText = new JTextField(8);
String[] actStrings = {"bowling", "lacrosse", "wrestling", "painting", "archery"};
JComboBox jComboBox1 = new JComboBox(actStrings);
jComboBox1.setEditable(true);
final JLabel fuelLabel = new JLabel("Current weight:");
final JTextField fuelText = new JTextField(8);
final JLabel actTime = new JLabel("How long did you work out:");
final JTextField time = new JTextField(8);
String[] timeStrings = {"Minutes", "Hours"};
JComboBox jComboBox2 = new JComboBox(timeStrings);
jComboBox2.setEditable(true);
final JLabel mpgLabel = new JLabel("Calories burned = ");
final JTextField mpgText = new JTextField(8);
JButton clearButton = new JButton("Clear");
JButton calcButton = new JButton("Calculate");
final JLabel labelPic1;
final ImageIcon[] imgIcons;
String[] fileNames = {"pics/bowling.jpg", "pics/lacrosse.jpg",
"pics/wrestling.jpg", "pics/painting.jpg", "pics/archery.jpg"};
imgIcons = new ImageIcon[fileNames.length];
BufferedImage image = null;
for (int i = 0; i < fileNames.length; i++) {
try {
image = ImageIO.read(new File(fileNames[i]));
} catch (IOException ex) {
System.out.println(ex.toString());
System.out.println(fileNames[i]);
JOptionPane.showMessageDialog(null, ex.toString() + " " + fileNames[i]);
System.exit(0); // exit program
}
Image newimg = image.getScaledInstance(200, 200, java.awt.Image.SCALE_SMOOTH);
imgIcons[i] = new ImageIcon(newimg);
}
labelPic1 = new JLabel(imgIcons[0]);
setResizable(false);
JPanel p = new JPanel(new MigLayout("", "[][][][][]",
"[][][][][][][][][][][][][][][]"));
p.setBackground(Color.WHITE);
setContentPane(p);
p.add(labelPic1, "cell 0 3 1 3");
p.add(calcButton, "cell 0 9");
p.add(titleLabel, "cell 1 0 2 1");
p.add(distLabel, "cell 0 2");
p.add(fuelLabel, "cell 1 5");
p.add(mpgLabel, "cell 1 9");
p.add(jComboBox1, "cell 1 2");
p.add(fuelText, "cell 1 7");
p.add(jComboBox2, "cell 1 7");
p.add(actTime, "cell 0 7");
p.add(distText, "cell 1 5");
p.add(mpgText, "cell 1 9");
jComboBox1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
//JComboBox jComboBox1 = (JComboBox)event.getSource();
JComboBox jComboBox1 = (JComboBox) event.getSource();
if (jComboBox1.getSelectedItem() == "bowling") {
labelPic1.setIcon(imgIcons[0]);
}
if (jComboBox1.getSelectedItem() == "lacrosse") {
labelPic1.setIcon(imgIcons[1]);
}
if (jComboBox1.getSelectedItem() == "wrestling") {
labelPic1.setIcon(imgIcons[2]);
}
if (jComboBox1.getSelectedItem() == "painting") {
labelPic1.setIcon(imgIcons[3]);
}
if (jComboBox1.getSelectedItem() == "archery") {
labelPic1.setIcon(imgIcons[4]);
}
}
});
calcButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (isNumeric(distText.getText()) && isNumeric(fuelText.getText())) {
double fuel;
double dist;
double result;
fuel = Double.parseDouble(fuelText.getText());
dist = Double.parseDouble(distText.getText());
result = dist / fuel;
mpgText.setText(String.format("%f", result));
} else {
JOptionPane.showMessageDialog(null, "Enter distance traveled and fuel used");
}
}
});
setTitle("Calorie Calculator");
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private static boolean isNumeric(String text) {
try {
Double.parseDouble(text);
} catch (Exception e) {
return false;
}
return true;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(
// "javax.swing.plaf.metal.MetalLookAndFeel");
// "com.sun.java.swing.plaf.motif.MotifLookAndFeel");
UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
new calorie().setVisible(true);
}
});
}
}