jlist 怎么使用

xjmlj2010 2011-04-10 06:55:50


我的用java做的日历,图如上,
当改变年时间的时候,不能使下面的日历改变,具体要调用jlist的哪几个方法,才能使日历改变;
就像电脑自带的日历一样

class DatePanel extends JPanel implements ActionListener
{
MenologyPanel mpanel=null;//我自己定义的一个panel可以打印日历的panel
JPanel panel=null;
int year=2011,month=1;
JComboBox jcb1;
JList jlist;
JScrollPane jsp;
String str2[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
String str1[];
public DatePanel()
{
str1=new String[120];
for(int i=0;i<120;i++){
str1[i]=new String((1980+i)+"");
}
this.setLayout(new BorderLayout());
panel=new JPanel();
panel.setLayout(new GridLayout(1,2,50,0));

jcb1=new JComboBox(str2);
jlist=new JList(str1);
jsp=new JScrollPane(jlist);
jlist.setVisibleRowCount(1);
jlist.setSelectedIndex(31);
// jlist.addAncestorListener(this);
jcb1.setBorder(BorderFactory.createMatteBorder(0, 10, 0, 10,jcb1.getBackground()));
//jsp.setBorder(BorderFactory.createMatteBorder(0, 10,0, 10, jsp.getBackground()));
jcb1.addActionListener(this);
panel.add(jcb1);
panel.add(jsp);
this.add(panel,BorderLayout.NORTH);
mpanel=new MenologyPanel(year,month);
mpanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createMatteBorder(10, 10, 10, 10, mpanel.getBackground()),
BorderFactory.createBevelBorder(BevelBorder.LOWERED)));

add(mpanel,BorderLayout.CENTER);
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int i=jcb1.getSelectedIndex();
month=i+1;
try {
this.remove(mpanel);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mpanel=new MenologyPanel(year,month);
mpanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createMatteBorder(10, 10, 10, 10, mpanel.getBackground()),
BorderFactory.createBevelBorder(BevelBorder.LOWERED)));
add(mpanel,BorderLayout.CENTER);
this.validate();//重新设置定位
}
}
...全文
404 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2011-04-11
  • 打赏
  • 举报
回复
SpinnerNumberModel model = new SpinnerNumberModel(2011,1900,2100,1);
JSpinner spinner = new JSpinner(model);
spinner.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
JSpinner spinner = (JSpinner)e.getSource();
int year = ((Integer)spinner.getValue()).intValue();
...
}
});
xjmlj2010 2011-04-11
  • 打赏
  • 举报
回复
ChangeListener listener =new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
SpinnerModel source = null;
try {
source = ((SpinnerModel)e.getSource());
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println( "The value is: " + source.getNextValue());

//year=Integer.parseInt(source.getValue().toString());
}
};

还会出现这样的异常

java.lang.ClassCastException: javax.swing.JSpinner cannot be cast to javax.swing.SpinnerModel
at com.Menology.DatePanel$1.stateChanged(TestMenology.java:242)
at javax.swing.JSpinner.fireStateChanged(Unknown Source)
at javax.swing.JSpinner$ModelListener.stateChanged(Unknown Source)
at javax.swing.AbstractSpinnerModel.fireStateChanged(Unknown Source)
at javax.swing.SpinnerListModel.setValue(Unknown Source)
at javax.swing.JSpinner.setValue(Unknown Source)
at javax.swing.plaf.basic.BasicSpinnerUI$ArrowButtonHandler.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.Menology.DatePanel$1.stateChanged(TestMenology.java:247)
at javax.swing.JSpinner.fireStateChanged(Unknown Source)
at javax.swing.JSpinner$ModelListener.stateChanged(Unknown Source)
at javax.swing.AbstractSpinnerModel.fireStateChanged(Unknown Source)
at javax.swing.SpinnerListModel.setValue(Unknown Source)
at javax.swing.JSpinner.setValue(Unknown Source)
at javax.swing.plaf.basic.BasicSpinnerUI$ArrowButtonHandler.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
xjmlj2010 2011-04-11
  • 打赏
  • 举报
回复
但用了 JSpinner 还是不会具体的类的方法,在网上也找了一下,没有可以可行的方法。
xjmlj2010 2011-04-11
  • 打赏
  • 举报
回复
你的这个还是有点问题 ,不过我已经解决了
huntor 2011-04-10
  • 打赏
  • 举报
回复
显示 年 那个组件换成 JSpinner 吧。 然后使用 ChangeListener 改变下面的 月
xjmlj2010 2011-04-10
  • 打赏
  • 举报
回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧