2014-02-21 304 views
1

我有2個日期選擇器顯示在圖像中。如何在日期選擇器中禁用日期時選擇其他日期選擇器中的日期

這裏首先我選擇issuedate那麼returndate日期選擇器顯示日的isuue日期後。該issuedate到backword日期是不可見的回報日期選擇

enter image description here

的日期選擇器代碼...

 JLabel lblIssueDate = new JLabel("Issue Date"); 
     lblIssueDate.setBounds(85, 47, 137, 14); 
     issuePanel.add(lblIssueDate); 

     issueDate = new JXDatePicker(); 
     java.util.Date utilDate=new Date(); 
     java.sql.Date sqldate=new java.sql.Date(utilDate.getTime()); 
     issueDate.setDate(sqldate); 
     issueDate.setBounds(232, 44, 184, 20); 
     issuePanel.add(issueDate); 

     JLabel lblReturnDate = new JLabel("Return Date"); 
     lblReturnDate.setBounds(85, 113, 137, 14); 
     issuePanel.add(lblReturnDate); 

     returnDate = new JXDatePicker(); 
     returnDate.setBounds(232, 110, 184, 20); 
     issuePanel.add(returnDate); 

回答

3

基本上,你可以設定日期的上下可接受的範圍通過其JXMonthView選擇器。這將限制日期,用戶可以挑選

例如...

DatePicker

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.beans.PropertyChangeEvent; 
import java.beans.PropertyChangeListener; 
import java.util.Date; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import org.jdesktop.swingx.JXDatePicker; 

public class TestDatePicker { 

    public static void main(String[] args) { 
     new TestDatePicker(); 
    } 

    public TestDatePicker() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private JXDatePicker issueDate; 
     private final JXDatePicker returnDate; 

     public TestPane() { 
      setLayout(new GridBagLayout()); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridx = 0; 
      gbc.gridy = 0; 

      JLabel lblIssueDate = new JLabel("Issue Date"); 
      add(lblIssueDate, gbc); 

      issueDate = new JXDatePicker(); 
      returnDate = new JXDatePicker(); 

      issueDate.addPropertyChangeListener("date", new PropertyChangeListener() { 
       @Override 
       public void propertyChange(PropertyChangeEvent evt) { 
        System.out.println("date"); 
        Date selectedDate = issueDate.getDate(); 
        returnDate.getMonthView().setLowerBound(selectedDate); 
       } 
      }); 
      java.util.Date utilDate = new Date(); 
      java.sql.Date sqldate = new java.sql.Date(utilDate.getTime()); 
      issueDate.setDate(sqldate); 
      gbc.gridx++; 
      add(issueDate, gbc); 

      gbc.gridx = 0; 
      gbc.gridy++; 
      JLabel lblReturnDate = new JLabel("Return Date"); 
      add(lblReturnDate, gbc); 

      gbc.gridx++; 
      add(returnDate, gbc); 
     } 
    } 

} 

現在,如果你希望能夠挑選日期的IssueDate之前,你可以使用setUpperBound代替。

如果要排除選定的日期爲好,那麼你需要在所需方向包括它使用Calendar和滾動它由天...

我也強烈建議使用適當的佈局管理員,因爲他們將處理各種系統之間的差異以及字體如何渲染等等。

鞦韆還設計有佈局管理工作,所以選擇忽略他們可以有很多有趣的副作用......

Laying Out Components Within a Container

看看
相關問題