我就是设置当天的颜色是兰色的可是,随着年和月的变化,兰色的日期也就变的多了起来,不知道怎么搞的,如今天是5号,以后你改年和月可是每个月的5号都是兰色!
大家帮我看看我的这个方法那里错了?/
public void setToday(){//设置当天的颜色为兰色
for(int count=getDayweek();count<getDayweek()+getMaxDay();count++)
if(btn[count].getActionCommand().trim().equals(String.valueOf(getToday())))
btn[count].setForeground(Color.BLUE);
} 原代码我也贴上大家帮忙看看谢谢了啊!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;class MyCalendar extends JFrame{
private final String []week={" 日"," 一"," 二"," 三"," 四"," 五"," 六"};
private GregorianCalendar now;
private static final GregorianCalendar nows=new GregorianCalendar();
private int days,year,month,dayweek;//得到当月的天数,年,月,星期几
private int today; //得到今天的日期
private JSpinner yearJ; //年份微调器
private JComboBox monthC; //月份的组合框
private JLabel yearLbl; //年标签
private JLabel monthLbl; //月标签
private JLabel dateLbl;
private JLabel []lbl=new JLabel[7];
private JButton[] btn=new JButton[42];
private JPanel panel_ym; //放置年和月份的面板
private JPanel panel_day;// 放置天数的面板
public int getToday(){
today=nows.get(Calendar.DAY_OF_MONTH);
return today;
}
public MyCalendar(){
setTitle("Calendar Applecation");
setSize(400,220);//设置大小
setResizable(false);//大小为不可调整
Container c=getContentPane();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter(){//关闭窗口释放系统的资源
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}});
panel_ym=new JPanel();
panel_day=new JPanel();
monthC=new JComboBox();
yearLbl=new JLabel("年");
yearLbl.setFont(new Font("宋体",Font.BOLD,18));
yearLbl.setForeground(Color.BLUE);
monthLbl=new JLabel("月");
monthLbl.setFont(new Font("宋体",Font.BOLD,18));
monthLbl.setForeground(Color.BLUE);
dateLbl =new JLabel("日期:");
dateLbl.setFont(new Font("宋体",Font.BOLD,18));
dateLbl.setForeground(Color.BLUE);
JLabel lbls=new JLabel(" ");
yearJ =new JSpinner();//滑块
now =new GregorianCalendar();//得到系统的当前日期
//Calendar nows=(Calendar)(now.clone());
//today = nows.get(Calendar.DAY_OF_MONTH);//得到今天的日期
for(int i=1;i<13;i++) //月份组合框框添加1-12月
monthC.addItem(""+i);
month=now.get(Calendar.MONTH);//得到当前系统的月份
monthC.setSelectedIndex(month); //默认为当前系统的月份
monthC.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setDate();
//setToday();
}});
//设置数字的格式为"0000"
yearJ.setEditor(new JSpinner.NumberEditor(yearJ, "0000"));
yearJ.setValue(new Integer(now.get(Calendar.YEAR)));//设定年份列表为当前年份
yearJ.addChangeListener(new ChangeListener() { //添加当滑块的数值发生变化
public void stateChanged(ChangeEvent changeEvent) {
setDate();
// setToday();
}
});
panel_ym.add(dateLbl);//添加控件
panel_ym.add(yearJ);
panel_ym.add(yearLbl);
panel_ym.add(lbls);
panel_ym.add(monthC);
panel_ym.add(monthLbl);
c.add(panel_ym,BorderLayout.NORTH);
c.add(panel_day,BorderLayout.CENTER);
panel_day.setLayout(new GridLayout(7,7,1,1));//网格布局
for(int i=0;i<7;i++){ //添加并设置头标签
lbl[i]=new JLabel();
lbl[i].setFont(new Font("楷体",Font.BOLD,18));
lbl[i].setForeground(Color.blue);
lbl[i].setText(week[i]);
panel_day.add(lbl[i]);
}
for(int i=0;i<42;i++){ //添加日期按扭
btn[i]=new JButton();
panel_day.add(btn[i]);
btn[i].setFont(new Font("宋体",Font.BOLD,16));
}
setDate();
}
public int getMaxDay(){ //得到当前月的最大天数
now=new GregorianCalendar(getYear(),getMonth(),1);
days=now.getActualMaximum(Calendar.DAY_OF_MONTH);
return days;
}
public int getMonth(){//得到当前的月份
return monthC.getSelectedIndex();
}
public int getYear(){ //得到当前的年份
year=((Integer)yearJ.getValue()).intValue();//得到控制器的数值
return year;
}
public int getDayweek(){ //从星期天开始
now=new GregorianCalendar(getYear(),getMonth(),today);//设置当月的头一天
now.set(Calendar.DAY_OF_MONTH,1);
dayweek=now.get(Calendar.DAY_OF_WEEK);//得到当月的头一天是星期几
return dayweek;
}
public void setDate(){
now=new GregorianCalendar(getYear(),getMonth(),1);
for(int i=0;i<42;i++){//全部按扭置为空
btn[i].setText("");
if(i%7==0||i==6||i==13||i==20||i==27||i==34||i==41)//设置星期天字颜色为红色
btn[i].setForeground(Color.red);}
int count=getDayweek()-1;
for(int i=1;i<=getMaxDay();i++){//添加日期到上面
btn[count++].setText(String.valueOf(i));
}
setToday();
}
public void setToday(){//设置当天的颜色为兰色
for(int count=getDayweek();count<getDayweek()+getMaxDay();count++)
if(btn[count].getActionCommand().trim().equals(String.valueOf(getToday())))
btn[count].setForeground(Color.BLUE);
} }public class MyCalendarTest{
public static void main(String []args){
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();//得到屏幕的对象
int width=screen.width;//屏幕宽度
int height=screen.height;//屏幕高度
MyCalendar frame=new MyCalendar();
frame.setLocation(width/4,height/4);//显示在屏幕的位置
frame.show();//显示窗口
}
}
大家帮我看看我的这个方法那里错了?/
public void setToday(){//设置当天的颜色为兰色
for(int count=getDayweek();count<getDayweek()+getMaxDay();count++)
if(btn[count].getActionCommand().trim().equals(String.valueOf(getToday())))
btn[count].setForeground(Color.BLUE);
} 原代码我也贴上大家帮忙看看谢谢了啊!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;class MyCalendar extends JFrame{
private final String []week={" 日"," 一"," 二"," 三"," 四"," 五"," 六"};
private GregorianCalendar now;
private static final GregorianCalendar nows=new GregorianCalendar();
private int days,year,month,dayweek;//得到当月的天数,年,月,星期几
private int today; //得到今天的日期
private JSpinner yearJ; //年份微调器
private JComboBox monthC; //月份的组合框
private JLabel yearLbl; //年标签
private JLabel monthLbl; //月标签
private JLabel dateLbl;
private JLabel []lbl=new JLabel[7];
private JButton[] btn=new JButton[42];
private JPanel panel_ym; //放置年和月份的面板
private JPanel panel_day;// 放置天数的面板
public int getToday(){
today=nows.get(Calendar.DAY_OF_MONTH);
return today;
}
public MyCalendar(){
setTitle("Calendar Applecation");
setSize(400,220);//设置大小
setResizable(false);//大小为不可调整
Container c=getContentPane();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter(){//关闭窗口释放系统的资源
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}});
panel_ym=new JPanel();
panel_day=new JPanel();
monthC=new JComboBox();
yearLbl=new JLabel("年");
yearLbl.setFont(new Font("宋体",Font.BOLD,18));
yearLbl.setForeground(Color.BLUE);
monthLbl=new JLabel("月");
monthLbl.setFont(new Font("宋体",Font.BOLD,18));
monthLbl.setForeground(Color.BLUE);
dateLbl =new JLabel("日期:");
dateLbl.setFont(new Font("宋体",Font.BOLD,18));
dateLbl.setForeground(Color.BLUE);
JLabel lbls=new JLabel(" ");
yearJ =new JSpinner();//滑块
now =new GregorianCalendar();//得到系统的当前日期
//Calendar nows=(Calendar)(now.clone());
//today = nows.get(Calendar.DAY_OF_MONTH);//得到今天的日期
for(int i=1;i<13;i++) //月份组合框框添加1-12月
monthC.addItem(""+i);
month=now.get(Calendar.MONTH);//得到当前系统的月份
monthC.setSelectedIndex(month); //默认为当前系统的月份
monthC.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setDate();
//setToday();
}});
//设置数字的格式为"0000"
yearJ.setEditor(new JSpinner.NumberEditor(yearJ, "0000"));
yearJ.setValue(new Integer(now.get(Calendar.YEAR)));//设定年份列表为当前年份
yearJ.addChangeListener(new ChangeListener() { //添加当滑块的数值发生变化
public void stateChanged(ChangeEvent changeEvent) {
setDate();
// setToday();
}
});
panel_ym.add(dateLbl);//添加控件
panel_ym.add(yearJ);
panel_ym.add(yearLbl);
panel_ym.add(lbls);
panel_ym.add(monthC);
panel_ym.add(monthLbl);
c.add(panel_ym,BorderLayout.NORTH);
c.add(panel_day,BorderLayout.CENTER);
panel_day.setLayout(new GridLayout(7,7,1,1));//网格布局
for(int i=0;i<7;i++){ //添加并设置头标签
lbl[i]=new JLabel();
lbl[i].setFont(new Font("楷体",Font.BOLD,18));
lbl[i].setForeground(Color.blue);
lbl[i].setText(week[i]);
panel_day.add(lbl[i]);
}
for(int i=0;i<42;i++){ //添加日期按扭
btn[i]=new JButton();
panel_day.add(btn[i]);
btn[i].setFont(new Font("宋体",Font.BOLD,16));
}
setDate();
}
public int getMaxDay(){ //得到当前月的最大天数
now=new GregorianCalendar(getYear(),getMonth(),1);
days=now.getActualMaximum(Calendar.DAY_OF_MONTH);
return days;
}
public int getMonth(){//得到当前的月份
return monthC.getSelectedIndex();
}
public int getYear(){ //得到当前的年份
year=((Integer)yearJ.getValue()).intValue();//得到控制器的数值
return year;
}
public int getDayweek(){ //从星期天开始
now=new GregorianCalendar(getYear(),getMonth(),today);//设置当月的头一天
now.set(Calendar.DAY_OF_MONTH,1);
dayweek=now.get(Calendar.DAY_OF_WEEK);//得到当月的头一天是星期几
return dayweek;
}
public void setDate(){
now=new GregorianCalendar(getYear(),getMonth(),1);
for(int i=0;i<42;i++){//全部按扭置为空
btn[i].setText("");
if(i%7==0||i==6||i==13||i==20||i==27||i==34||i==41)//设置星期天字颜色为红色
btn[i].setForeground(Color.red);}
int count=getDayweek()-1;
for(int i=1;i<=getMaxDay();i++){//添加日期到上面
btn[count++].setText(String.valueOf(i));
}
setToday();
}
public void setToday(){//设置当天的颜色为兰色
for(int count=getDayweek();count<getDayweek()+getMaxDay();count++)
if(btn[count].getActionCommand().trim().equals(String.valueOf(getToday())))
btn[count].setForeground(Color.BLUE);
} }public class MyCalendarTest{
public static void main(String []args){
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();//得到屏幕的对象
int width=screen.width;//屏幕宽度
int height=screen.height;//屏幕高度
MyCalendar frame=new MyCalendar();
frame.setLocation(width/4,height/4);//显示在屏幕的位置
frame.show();//显示窗口
}
}
解决方案 »
- map的问题,其实还是编码的问题.......
- 怎样用java获取excel文件的版本(95、2003、2007等)?
- 如何修改BufferedImage的type,如把TYPE_INT_ABGR转换成TYPE_INT_RGB????急
- 在线等:有多个sql语句,想一起运行,可以用Preparedstatement的addbatch方法吗?
- 怎么使用jdk来创建一个在Linux下有执行权限的文件呢?
- java文件操作,如果修改文件中的某一行
- 请教:有关JTable的问题【急】
- package 的 问题
- 关于《java2编程详解》一书的学习问题
- 我也散分!你当我不会?
- 点评一下建模工具Enterprise Architect吧?!
- 如何写大的XML文件,文件大小在300M以上。在PC机上。
import java.awt.*;
import java.applet.Applet;
import java.util.*;public class CalendarApplet extends java.applet.Applet
{
private static final long serialVersionUID = 1L;
public void paint(Graphics g)
{
int todayDay;
int todayMonth;
Calendar c=Calendar.getInstance();
todayDay=c.get(c.DAY_OF_MONTH);
todayMonth=c.get(c.MONTH);
g.setColor(Color.red);
g.setFont(new Font("宋体",Font.BOLD,20));
g.drawString("today is:"+c.get(c.YEAR)+"-"+c.get(c.MONTH)+"-"+todayDay,30,30);
c.add(c.DAY_OF_MONTH,0-c.get(c.DAY_OF_MONTH)+1);
g.setColor(new Color(555));
g.drawRect(20,40,450,200);
g.setColor(Color.pink);
g.fillRect(21,41,449,199);
g.setColor(Color.gray);
g.fillRect(21,41,449,30);
g.setFont(new Font("仿宋",Font.BOLD,20));
g.setColor(Color.GREEN);
g.drawString("Sun Mon Tue Wed Thu Fri Sat",40,65);
g.setFont(new Font("黑体",Font.BOLD,15));
g.setColor(Color.white);
//g.drawString(c.get(c.DAY_OF_WEEK)+"",50,50);
while(true)
{
if(c.get(c.DAY_OF_WEEK)==1||c.get(c.DAY_OF_WEEK)==7)
g.setColor(Color.darkGray);
else
if(c.get(c.DAY_OF_MONTH)==todayDay)
g.setColor(Color.red);
else
g.setColor(Color.blue);
g.drawString(c.get(c.DAY_OF_MONTH)+"",50+(c.get(c.DAY_OF_WEEK)-1)*66,70+c.get(c.WEEK_OF_MONTH)*30);
c.add(c.DAY_OF_YEAR,1);
if(c.get(c.MONTH)>todayMonth)
break;
}
}
}
public void setDate() { now = new GregorianCalendar(getYear(), getMonth(), 1); for (int i = 0; i < 42; i++) {// 全部按扭置为空
btn[i].setText("");
} int count = getDayweek() - 1;
for (int i = 1; i <= getMaxDay(); i++) {// 添加日期到上面 btn[count].setText(String.valueOf(i));
btn[count].setForeground(Color.BLACK);
count++;
}
for (int i = 0; i < 42; i++) {// 全部按扭置为空
if (i % 7 == 0 || i == 6 || i == 13 || i == 20 || i == 27
|| i == 34 || i == 41)// 设置星期天字颜色为红色
btn[i].setForeground(Color.red);
}
setToday();
}