Note that there are some explanatory texts on larger screens.

plurals
  1. POupdate textbox based on combobox selection
    text
    copied!<p>I am making a little program that calculates the calories burned based on 5 different physical activities selected from a combobox in java. the user is given 5 options: bowling, archery, lacross, wrestling, and painting. here is the website with the given numbers calculated, and the user enters his weight and how long he worked out, in either minutes or hours, and when he/she hits calculate it should display the total calories burned. </p> <p><a href="http://www.nutristrategy.com/activitylist4.htm" rel="nofollow">http://www.nutristrategy.com/activitylist4.htm</a></p> <p>my problem is I dont know how to make the fields update based on the selection, in other words, I need to create a method that waits for the selection, then updates the formula to calculate their calories burned based on their weight. how do I do this? Do i make an if else statement that says, "if archery selected and there is a number in the weight textbox?" then use this formula? I dont know how to check what the selection was from the combobox. </p> <p>here is my code. </p> <pre><code>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 &lt; 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()) &amp;&amp; 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); } }); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload