JComboBox, ActionListener, How do I really use them?
Im currently learning java and stuck onto JComboBox. I have a feel things that I am trying out and hitting the wall for the pass 4 hours.
I am trying to let a user select 1-10 from a ComboBox. How do I get the value of the combobox? The value of the combo box is equivalent to quantity.
So I have another value which is maybe $10. If the user choose quantity 2.
I want to get the value of what the user choose, then take the value of $10 and times it by 2.
The result which is $20 will be displayed on the JTextField.
Please help :(
public class Panel extends JPanel { public Panel(){ JPanel test = new JPanel(new GridBagLayout()); String[] quantities1 = {"0","1","2","3","4","5","6","7","8","9","10"}; JComboBox quantitiesCB = new JComboBox(quantities1); quantitiesCB.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ JComboBox combo = (JComboBox)e.getSource(); String currentQuantity = (String)combo.getSelectedItem(); } } ); JTextField result = new JTextField(); setLayout(new GridBagLayout()); setPreferredSize(new Dimension(640,480)); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0.1; gbc.weighty = 0.1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.anchor = GridBagConstraints.NORTH; add(quantitiesCB, gbc); } }
Answers
Just few changes:
public class Panel extends JPanel { public Panel(){ JPanel test = new JPanel(new GridBagLayout()); String value = "10"; final JTextField result = new JTextField(); String[] quantities1 = {"0","1","2","3","4","5","6","7","8","9","10"}; JComboBox quantitiesCB = new JComboBox(quantities1); quantitiesCB.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ JComboBox combo = (JComboBox)e.getSource(); String currentQuantity = (String)combo.getSelectedItem(); int value1 = Integer.valueOf(value); int value2 = Integer.valueOf(currentQuantity); String resultText = String.valueOf(value1*value2); result.setText("$" + resultText); } } ); setLayout(new GridBagLayout()); setPreferredSize(new Dimension(640,480)); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0.1; gbc.weighty = 0.1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.anchor = GridBagConstraints.NORTH; add(quantitiesCB, gbc); } }
I am guessing that you are looking for a way to convert a String to an Integer. That can be done with Integer.valueOf.
Below is a very small/basic demo code that works (but I don't know exactly what you are looking for):
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Panel extends JPanel { private JTextField result; private JTextField amount; public Panel() { setLayout(new GridBagLayout()); String[] quantities1 = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; JLabel dollar = new JLabel("$"); amount = new JTextField(3); JComboBox quantitiesCB = new JComboBox(quantities1); quantitiesCB.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JComboBox combo = (JComboBox) e.getSource(); String currentQuantity = (String) combo.getSelectedItem(); int a; int q; try { a = Integer.valueOf(amount.getText()); q = Integer.valueOf(currentQuantity); result.setText("$" + String.valueOf(a * q)); } catch (NumberFormatException e1) { e1.printStackTrace(); // Some invalid number } } }); JLabel equal = new JLabel("="); result = new JTextField(5); JLabel quantity = new JLabel("Quantity:"); GridBagConstraints gbc = new GridBagConstraints(); add(dollar, gbc); add(amount, gbc); add(quantity, gbc); add(quantitiesCB, gbc); add(equal, gbc); add(result, gbc); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new Panel()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
Need Your Help
Java contains() not in accordance with equals()
I have a custom class with overriden equals() and hashCode() methods. I store instances of that class in a TreeSet. I cannot figure out why the tree.contains(someObject) returns true, whileNull pointer Exception at ActionBar
java android nullpointerexception stack-trace android-logcat
I am getting this Error at runtime.