2014-02-21 303 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

看看
相关问题