2013-02-28 5 views
1

У меня есть JComboBox, который имеет значения No & Yes. Это, как я сохранить его в базе данных:JCombobox корректирующий текст на основе истинного/ложного

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

затем передать jdto в мой метод создания. При выборе значения yes значение true. Сейчас я боюсь работать в обратной логике.

Я хочу, чтобы иметь возможность автоматически заполнять combobox с Yes or No в зависимости от значения true/false из базы данных.

атм У меня есть следующие

fieldPlace.setSelectedItem(jdto.getPlacement()); 

Я пытался, если другое заявление со строкой, но не смог сделать это.

может кто-то продемонстрировать, как достичь этого.

это getPlacement()

public Boolean getPlacement() { 
     return placement; 
    } 

ответ

1

Похоже, ваш JComboBox модель содержит экземпляры String, поэтому написать вспомогательный метод, который транслирует:

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

Затем используют этот метод для setSelectedItem():

fieldPlace.setSelectedItem(jdto.getPlacementString()); 
+0

Привет, Я спасаю его как 'jdto.setPlacement ("Да" .equals (fieldPlace.getSelectedItem()));' и он устанавливает true, если я нажимаю «да», но на стороне поиска он всегда приходит как ложь, даже если это правда. – MooHa

+0

Вы совершаете транзакцию? Обновляет ли база данных обновление? – trashgod

+0

слегка разочарован ... отображение элементов в визуальное представление - это задача средства визуализации, а не какой-либо вспомогательный метод (за исключением случаев, когда последний используется настраиваемым визуализатором :) – kleopatra

2
  • добавить товар в DefaultComboBoxModel, может быть intialized автоматически из правильного массива осуществляется в 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(); 
      } 
     }); 
    } 
} 
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....); 
    } 
} 
+0

ОК, но проблема в том, что он всегда возвращается из sqlite как false, несмотря на то, что это правда. методы работы с геттером и сеттерами являются логическими, а не строковыми – MooHa

Смежные вопросы