我正在学习java并坚持使用JComboBox。 我有一种感觉,我正在尝试的东西,并通过墙4小时通过。
我试图让用户从ComboBox中选择1-10。 我如何获得组合框的价值? 组合框的值等于数量。
所以我有另一个值可能是10美元。 如果用户选择数量2。
我希望得到用户选择的值,然后取10美元的值并将其乘以2。
$ 20的结果将显示在JTextField上。
请帮助:(
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);
}
}
答案 0 :(得分:3)
我猜您正在寻找一种将String
转换为Integer
的方法。这可以通过Integer.valueOf
完成。
下面是一个非常小/基本的演示代码(但我不确切地知道你在寻找什么):
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);
}
});
}
}
答案 1 :(得分:3)
只需进行一些更改:
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);
}
}
答案 2 :(得分:1)
您需要设定固定价格和JTextField
final
,以便将其传递给您的事件处理程序。
此外,为什么使用String
作为整数?你可以使用:
final int FixedPrice = 10;
final JTextField result = new JTextField();
int[] 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();
int currentQuantity = (Integer)combo.getSelectedItem();
result.setText("$" + String.valueOf(currentQuantity * FixedPrice));
}
}
);