2012-12-28 4 views
0

저는 jComboBox를 사용하여 날짜, 월, 연도를 표시합니다. jComboBox의 첫 번째 항목을 DD, MM, YY로 추가합니다 (모델 속성에서 첫 번째 항목을 "DD, YY"로 설정 함). JComboBox에의) 내가 DD 및 YY JComboBox가 동적으로 값을 표시하지 않았다 선택하면 jComboBox 값을 나열하는 방법

//for date 
    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {           
    for(int k=1;k<=31;k++) 
    { 

     jComboBox1.addItem(k); 
    } 
} 

    //for year 
    private void jComboBox3ActionPerformed(java.awt.event.ActionEvent evt) {           
    for(int n=1980;n<=2012;n++) 
    { 

     jComboBox3.addItem(n); 
    } 
}       

그래서 내 문제는 내가 loop.The 코드는 다음에 사용되는 날짜와 연도 값을 .. 표시 .TO 예를 들어 목록에서 DD jComboBox를 클릭하면 DD로 다른 항목이 표시되고 선택하면 DD 및 YY의 모든 값이 표시됩니다. 왜?? 동적으로 표시하는 방법에 대해 설명합니다.

답변

1
+0

내가 NetBeans.I을 uisng있어 루프를 통해 JComboBox에 날짜, 월, 년을 추가하는 방법을 알고 싶어하고 난 DD, MM으로 목록의 첫 번째 항목을 원하는 , YY. 어떻게해야할까요? –

+0

JComboBox가 getSelectedItem에서 값을 반환하지 않습니다. – mKorbel

1

코드가 때마다 그것에 사용자가 클릭을 JComboBox에 초기화이 잘못

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {           

////////////here you put the action like getSelectedItem() which return the item 

} 
+0

** netbeans IDE를 사용하여 **, jComboBox에서 첫 번째 항목을 DD, 월을 MM, YEAR를 YY로 지정하고 각각의 값을 추가하는 데 루프를 사용했습니다. 또한 개인 무효로 노력 jComboBox3ActionPerformed (java.awt.event.ActionEvent evt) { jComboBox.setSelectedItem ("DD"); (int n = 1980; n <= 2012; n ++) {jComboBox3.addItem (n);} for 루프를 사용할 경우 jComboBox의 첫 번째 항목으로 DD가 추가되지 않습니다. ?? –

1

확인이 코드

public class ComboBoxDatePicker extends JPanel implements ItemListener { 

    private static final long serialVersionUID = 1L; 
    private JComboBox myDay; 
    private JComboBox myMonth; 
    private JComboBox myYear; 
    private Collection<ItemListener> myListeners; 

    public ComboBoxDatePicker(String name) { 
     this(name, new Date(System.currentTimeMillis())); 
    } 

    public ComboBoxDatePicker(String name, Date date) { 
     super(new FlowLayout(FlowLayout.LEFT)); 
     myListeners = new HashSet<ItemListener>(); 

     myDay = new JComboBox(new RangeModel(1, 31)); 
     myMonth = new JComboBox(new RangeModel(1, 12)); 
     myYear = new JComboBox(new RangeModel(2000, 2020)); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     myDay.setSelectedItem(calendar.get(Calendar.DAY_OF_MONTH)); 
     myMonth.setSelectedItem(calendar.get(Calendar.MONTH) + 1); 
     myYear.setSelectedItem(calendar.get(Calendar.YEAR)); 

     myDay.addItemListener(this); 
     myMonth.addItemListener(this); 
     myYear.addItemListener(this); 

     add(new JLabel(name)); 
     add(myDay);   
     add(myMonth); 
     add(myYear); 

     doLayout(); 
    } 

    public void setEnabled(boolean enabled) { 
     myDay.setEnabled(enabled); 
     myMonth.setEnabled(enabled); 
     myYear.setEnabled(enabled); 
    } 

    public Date getDate() { 
     if (!myDay.isEnabled()) { 
      return null; 
     } 

     Calendar calendar = Calendar.getInstance(); 
     calendar.clear(); 
     calendar.set(Calendar.DAY_OF_MONTH, (Integer) myDay.getSelectedItem()); 
     calendar.set(Calendar.MONTH, (Integer) myMonth.getSelectedItem() - 1); 
     calendar.set(Calendar.YEAR, (Integer) myYear.getSelectedItem()); 
     return calendar.getTime(); 
    } 

    private static class RangeModel implements ComboBoxModel { 

     private int myMin; 
     private int myMax; 
     private Object mySelection; 

     public RangeModel(int min, int max) { 
      myMin = Math.min(min, max); 
      myMax = Math.max(min, max); 
      mySelection = myMin; 
     } 
     public Object getSelectedItem() { 
      return mySelection; 
     } 
     public void setSelectedItem(Object anItem) { 
      mySelection = anItem; 
     } 
     public int getSize() { 
      return myMax - myMin + 1; 
     } 
     public Object getElementAt(int index) { 
      return myMin + index; 
     } 
     public void addListDataListener(ListDataListener l) { 
     } 
     public void removeListDataListener(ListDataListener l) { 
     } 
    } 

    public void addItemListener(ItemListener l) { 
     myListeners.add(l); 
    } 

    public void itemStateChanged(ItemEvent e) { 
     for (ItemListener listener : myListeners) { 
      listener.itemStateChanged(e); 
     } 
    } 
} 

그리고 당신은 당신이

필요 이제까지 곳을 사용할 수 있습니다
JFrame frame = new JFrame() ; 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ComboBoxDatePicker chooser = new ComboBoxDatePicker("Choose Date"); 
    frame.add(chooser); 
    frame.pack(); 
    frame.setVisible(true); 
0

jframe을 사용하는 경우 코드를 작성하여 t의 콤보 상자에 값을 동적으로 추가 할 수 있습니다 이 같은 JFrame의의 그가 WindowActivated 이벤트 :

private void formWindowActivated(java.awt.event.WindowEvent evt) { 
// TODO add your handling code here: 
    //for Day 
    for(int i=1;i<=31;i++) 
    { 
     jComboBox1.addItem(i); 
    } 
    //for Month 
    for(int i=1;i<=12;i++) 
    { 
     jComboBox2.addItem(i); 
    } 
}