2012-02-12 97 views
1

基本上,我有一个JComboBox,并且当前所选值将显示在文本框的组合框旁边。Jcombobox,当选择一个项目时,会显示一个值

但是,我想要做的是从组合框中选择一个值 - 在文本框中显示一个不同的值(此显示的值是特定于从组合框中选择的值的

因此,在这种情况下,我在组合框的大小,我想在文本字段中显示成本。

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

public class ComboBox{ 
    JComboBox combo; 
    JTextField txt; 
    public static void main(String[] args) { 
    ComboBox b = new ComboBox(); 
    } 

    public ComboBox(){ 
    String course[] = {"18x18cm (7x7inches)","18x20cm (7x8inches)",}; 
    JFrame frame = new JFrame("Cost Calculator"); 
    JPanel panel = new JPanel(); 
    combo = new JComboBox(course); 
    combo.setBackground(Color.white); 
    combo.setForeground(Color.black); 
    txt = new JTextField(25); 
    panel.add(combo); 
    panel.add(txt); 
    frame.add(panel); 
    combo.addItemListener(new ItemListener(){ 
     public void itemStateChanged(ItemEvent ie){ 
     String str = (String)combo.getSelectedItem(); 
     txt.setText(str); 
     } 
    }); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400,200); 
    frame.setVisible(true); 
    } 
} 

所以我的问题是我怎么去呢?

+0

您似乎已经知道如何从组合框中检索所选值,以及如何在此选择更改时更新文本字段。那么问题是什么?如何获得具有尺寸的成本?这是我们无法用您发布的代码来回答的问题 – Robin 2012-02-12 10:41:22

+0

啊,基本上看不到复制的组合框中显示的复制组的相同副本,我想从组合框中选择一个值,然后得到一个值与文本字段中显示的关联。 例如。目前(comboxbox的值=显示的文字): 7x7cm = 7x7cm 取而代之,我想拥有: 7x7cm =£100 – Pebbs 2012-02-12 11:01:15

+0

这是我理解的部分。但是,我们应该如何给你一个答案与问题中的可用信息...你是唯一知道如何将7 * 7厘米转换为100磅的人 – Robin 2012-02-12 11:08:38

回答

2

你应该做的是做一个新的类,所以你可以保持JComboBox和JTextField绑定到另一个。

class MyClass{ 
    private String comboStr; 
    private String textStr; 

    public MyClass{ 
     comboStr = "this goes in my combobox"; 
     textStr = "this goes in my textfield"; 
    } 

    public String toString(){ 
     return comboStr; 
    } 

    public String getText(){ 
     return textStr; 
    } 
} 

(您需要的toString(),以便在下拉列表中的每个元素显示正确的文本。)

然后在你的听众,你可以使用以下方法来设置JTextField中的文本。

MyClass myObj = (MyClass)combo.getSelectedItem(); 
txt.setText(myObj.getText()); 
0

为了使JComboBox显示不同的文字,说Google,当有物体那里,有一个关于它的信息,你需要重写将被加入到JComboBox类的toString()方法。这是因为当JComboBox自行设置时,它会使用toString()方法为其中的每个对象创建显示文本。

相关问题