Jcombobox, когда элемент выбран, отображается значение - PullRequest
1 голос
/ 12 февраля 2012

По сути, у меня есть 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);
  }
}

Итак, мой вопрос, как мне поступить?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Что вам нужно сделать, это создать новый класс, чтобы вы могли сохранять данные для 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 голосов
/ 26 мая 2013

Чтобы JComboBox отображал другой текст, скажем, Google, когда там есть объект, имеющий информацию о нем, вам необходимо переопределить метод toString() в классе, который добавляетсяJComboBox.Это связано с тем, что когда JComboBox устанавливает себя, он использует метод toString() для каждого объекта в нем для создания отображаемого текста.

...