1

JComboBoxは値を持っているNo&を持っていますYes。これは私がデータベースに保存する方法です:

jdto.setPlacement("Yes".equals(comboPlace.getSelectedItem()));

jdto次に、作成メソッドに渡します。yes を選択すると、値は true になります。私は今、逆論理で作業するのに苦労しています。

Yes or Noデータベースからの真/偽の値に応じて、コンボボックスに自動的に入力できるようにしたいと考えています。

atm私は次のものを持っています

fieldPlace.setSelectedItem(jdto.getPlacement());

if else ステートメントを文字列で試しましたが、できませんでした。

誰かがこれを達成する方法を示すことができますか?

これは getPlacement() です

public Boolean getPlacement() {
        return placement;
    }
4

3 に答える 3

2

文字列表現ではなく、ブール値をモデルに格納します。アイテムのカスタムレンダリングは、...カスタムレンダラーのタスクです。

 public class BooleanListCellRenderer extends DefaultListCellRenderer {

     public Component getListCellRendererComponent( ... Object value, ...) {
          if (Boolean.TRUE.equals(value) { 
             value = "Yes";
          } else if (Boolean.FALSE.equals(value)) {
             value = "No";
          }
          return super.getListCellRendererComponent(... value....);   
     }
 }
于 2013-02-28T12:15:24.217 に答える
2
  • 項目を DefaultComboBoxModel に追加し、JComboBox API で実装された適切な配列から自動的に初期化できます

  • setSelectedItem を使用するか、setSelectedIndex をハードコードすることができます

例えば

import java.awt.event.ActionEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class ComboBoxBooleanModel {

    private javax.swing.Timer timer = null;
    private Vector<Boolean> comboBoxItems;
    private JComboBox box;

    public ComboBoxBooleanModel() {
        comboBoxItems = new Vector<Boolean>();
        comboBoxItems.add(Boolean.TRUE);
        comboBoxItems.add(Boolean.FALSE);
        box = new JComboBox(comboBoxItems);
        JFrame frame = new JFrame("");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(box);
        frame.setLocationRelativeTo(null);
        frame.pack();
        frame.setVisible(true);
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                box.setSelectedIndex(1);
            }
        });
        start();
    }

    private void start() {
        timer = new javax.swing.Timer(1250, updateCol());
        timer.start();
    }

    public Action updateCol() {
        return new AbstractAction("text load action") {
            private static final long serialVersionUID = 1L;

            @Override
            public void actionPerformed(ActionEvent e) {
                if (box.getSelectedItem() == (Boolean) false) {
                    box.setSelectedItem((Boolean) true);
                } else {
                    box.setSelectedItem((Boolean) false);
                }
            }
        };
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                ComboBoxBooleanModel comboBoxModel = new ComboBoxBooleanModel();
            }
        });
    }
}
于 2013-02-28T11:32:22.733 に答える
1

JComboBoxモデルにのインスタンスが含まれているように見えるStringので、次のように変換する補助メソッドを記述します。

public String getPlacementString() {
    if (getPlacement()) {
        return "Yes";
    } else {
        return "No";
    }
}

次に、そのメソッドを使用してsetSelectedItem()

fieldPlace.setSelectedItem(jdto.getPlacementString());
于 2013-02-28T11:25:45.417 に答える