我正在开发一个 java 桌面应用程序。我想使用 JCalendar 实现出生日期选择。我有一个 JLabel,这个 jCalendar 被添加到 JLabel 中。并使用 setBounds() 设置位置。但是日历与其他组件重叠,我无法选择日期,我该怎么办?
这是我的代码片段
JCalendar dob=new JCalendar();
raillabel. add(dob);
dob.setBounds(250, 186, 320, 330);
首先,你为什么要添加JCalendar
到一个JLabel
?您可以轻松地将其添加到JPanel
:
JPanel panel = new JPanel();
panel.add(new JCalendar());
如果您仍想将其添加JCalendar
到 aJLabel
那么您需要为最后一个提供LayoutManager以便正确添加组件:
JCalendar calendar = new JCalendar();
JLabel label = new JLabel("Select date of birth:");
label.setLayout(new BorderLayout());
label.add(calendar, BorderLayout.EAST);
看看A Visual Guide to Layout Managers。
正如@mKorbel 在他的评论中所说,您不应该使用NullLayout
andsetBounds()
方法来设置组件位置/大小。这是任务布局管理器的用途。
最后:
我想使用
JCalendar
.
您可能想尝试一下JDateChooser
,它允许选择日期或手动输入:
JDateChooser chooser = new JDateChooser();
chooser.setLocale(Locale.US);
JPanel panel = new JPanel();
panel.add(new JLabel("Date of Birth:"));
panel.add(chooser);
使用 swing,只需将 jDateChooser 控件放在您的表单上就可以了