如何直接用java Swing写日期下拉列表框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何直接用java Swing写日期下拉列表框相关的知识,希望对你有一定的参考价值。

后面的月和日如何做?每个月的天数不一样!

DateDropFrame extends JFrame
给year和month添加一个ItemListener来实时计算指定年和月中有多少天就可以了.
代码是用Swing写的,不过看你的图,不像是Swing界面.
/**
* Create the frame.
*/
public DateDropFrame()
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));

final JComboBox year = new JComboBox();
year.setModel(new DefaultComboBoxModel(getModel(start, end)));
contentPane.add(year);

final JComboBox month = new JComboBox();
month.setModel(new DefaultComboBoxModel(getModel(1, 12)));
contentPane.add(month);

final JComboBox day = new JComboBox();
contentPane.add(day);

year.addItemListener(new ItemListener()
public void itemStateChanged(ItemEvent e)
setDay(year, month, day);

);
month.addItemListener(new ItemListener()
public void itemStateChanged(ItemEvent e)
setDay(year, month, day);

);
setDay(year, month, day);
setContentPane(contentPane);


/**
* calculate days in select month & year
*/
private void setDay(JComboBox year, JComboBox month, JComboBox day)
int y = Integer.parseInt((String) year.getSelectedItem());
int m = Integer.parseInt((String) month.getSelectedItem());
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, y);
c.set(Calendar.MONTH, m - 1);
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
day.setModel(new DefaultComboBoxModel(getModel(1, days)));



/**
* get String array [start, end]
*/
private String[] getModel(int start, int end)
String[] m = new String[end - start + 1];
for (int i = 0; i < m.length; i++)
m[i] = String.valueOf(i + start);

return m;
追问

农历能不能弄进去啊?

追答

自己参考公历实现 去添加农历。需要增加一个setMonth函数,当选择的年变化时,需要更新月选择列表(农历有闰月,不再是固定的12个月了)。

参考技术A public static List reader_list;

reader_list = new List(shell, SWT.BORDER); //下拉框
reader_list.setBounds(int,int,int,int); //定位

String[] readerArray= new String[]"2011","2012",2013";
reader_list.setItems(readerArray); //赋值追问

后面的月和日怎么办?每个月的日期都不一样!

参考技术B 找一个Swingx的开源项目,里面有一个JDatePicker类,就是一个日历选择器。 参考技术C 直接自己做一个日期时间组件就行了追问

如何把组件添加进去?

追答

就是自己写一个类来封装时间组件,以前拿netbeans做开发的时候,当中没有时间组件,就是自己写好,然后调用

参考技术D 一.直接给出几个下拉列表放些值
二.去网上下个日期代码 选中文本框的时候显示一张日历表

请问下,java中如何将列表框放进滚动条(就是给列表框加上滚动条)?

一楼的运行不出来,
二楼的能不能更详细点,最好能够直接运行

参考技术A import javax.swing.*;
import java.awt.*;

public class Frame1 extends JFrame
JScrollPane jScrollPane1 = new JScrollPane();
JList jList1 = new JList();

public Frame1()
try
jbInit();

catch(Exception e)
e.printStackTrace();


private void jbInit() throws Exception
this.setLocale(java.util.Locale.getDefault());
this.getContentPane().setLayout(null);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setBounds(new Rectangle(141, 62, 89, 132));
this.getContentPane().add(jScrollPane1, null);
jScrollPane1.getViewport().add(jList1, null);

参考技术B JTextArea t=new JTextArea("");
JScrollPane sp=new JScrollPane(t);
t1.setLineWrap(true);

以上是关于如何直接用java Swing写日期下拉列表框的主要内容,如果未能解决你的问题,请参考以下文章

下拉列表框组件

java swing下拉框两级联动

html做网页,关于日期下拉列表框的问题

html网页做一个日期下拉框,传入java方法中,存入一个date变量中

php中,我想实现选择不同的下拉列表框内容时,页面的内容随之更新,如何实现

如何向java jframe中添加下拉列表 按钮 文本框 最后把信息存储在文件里