[英]how to disable dates in date picker when select a date in other datepicker
我有2個日期選擇器顯示在圖像中。
這里首先我選擇issuedate那么returndate日期選擇器顯示isuue日期后的日期 。 返回datepicker不顯示后台日期的已頒發日期
datepicker的代碼......
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);
基本上,您可以通過其JXMonthView
設置日期選擇器的上下可接受范圍。 這將限制用戶可以選擇的日期
例如...
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
並按所需方向將其滾動一天以包含它...
我還強烈建議使用適當的布局管理器,因為它們將處理系統之間的各種差異以及字體渲染的方式等等。
Swing也可以與布局管理器一起使用,因此選擇忽略它們會產生很多有趣的副作用......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.