读书人

高分求解决方案,为什么小弟我JComboBo

发布时间: 2011-12-10 22:22:01 作者: rapoo

高分求解决方案,为什么我JComboBox选择了却没效果
这是个日历程序,我想通过选择月份改变每月的日历.为什么选择却没有效果呢?
package Calendar;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

class Calendarday extends JPanel {

private JPanel dayPanel;

private static int count = 0;

private JLabel[] label;

private static final GregorianCalendar d = new GregorianCalendar();
private static final GregorianCalendar day = new GregorianCalendar();

public void setMonth(int month){
d.set(Calendar.MONTH, month-1);
day.set(Calendar.MONTH, month-1);
System.out.println(d.get(Calendar.MONTH));
}

public void setYear(int year){
d.set(Calendar.YEAR, year);
day.set(Calendar.YEAR, year);
}
public Calendarday() {
// 日期容器开始:

day.set(Calendar.DAY_OF_MONTH, 1);
int weekday = day.get(Calendar.DAY_OF_WEEK);

dayPanel = new JPanel();
// 根据每月的第一天来判断,决定日期表格容器的大小:
if (weekday == 7 || weekday==6) {
dayPanel.setLayout(new GridLayout(6, 7));
label = new JLabel[42];
for (int i = 0; i < label.length; i++) {
label[i] = new JLabel( " ");
dayPanel.add(label[i]);
}
} else {
dayPanel.setLayout(new GridLayout(5, 7));
label = new JLabel[35];
for (int i = 0; i < label.length; i++) {
label[i] = new JLabel( " ");
dayPanel.add(label[i]);
label[i].addMouseListener(new mousel());
}

}
// 日期表格容器结束;

printcalendar();
}


// 输出日期表
public void printcalendar() {
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);


d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK);

for (int i = Calendar.SUNDAY; i < weekday; i++) {
label[count].setText( " ");
count++;
}
System.out.println(month+ "ss ");
do {
int day = d.get(Calendar.DAY_OF_MONTH);
label[count].setText(Integer.toString(day));
if (day == today) {
label[count].setText(label[count].getText() + "* ");
} else {
label[count].setText(label[count].getText() + " ");
}

d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
count++;
} while (d.get(Calendar.MONTH) == month);
count=0;
}

private class mousel extends MouseAdapter{

public void mousePressed(MouseEvent event){}
public void mouseClicked(MouseEvent event){}


public void mouseExited(MouseEvent event)
{
JLabel label=(JLabel) event.getSource();
label.setOpaque(false);
label.setBackground(Color.black);
}
public void mouseEntered(MouseEvent event)
{
JLabel label=(JLabel) event.getSource();
label.setOpaque(true);
label.setBackground(Color.red);
}
public void mouseReleased(MouseEvent event){}

}

public JPanel getnewtpye(){
return dayPanel;
}

}


//顶部星期的类
class CalendarTop extends JPanel{
private JPanel weekPanel;

public CalendarTop(String ... weekname){

// 星期容器
weekPanel = new JPanel();
weekPanel.setLayout(new GridLayout(1, 7));

for(int i=0;i <weekname.length;i++){
addLabel(weekname[i]);
}

// 星期容器结束;
}
// 添加星期到容器里;
private void addLabel(String str) {
JLabel weeklabel = new JLabel(str);
weekPanel.add(weeklabel);
}

public JPanel getnewtype(){
return weekPanel;
}
}

class Calendaradjust extends JPanel{
private JPanel adjustPanel;
private JComboBox month;
Calendaradjust(){
month=new JComboBox();

month.setEditable(false);
for(int i=1;i <=12;i++)
month.addItem(i);
month.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
Calendarday calendar=new Calendarday();
calendar.setMonth((Integer)month.getSelectedItem());

}
});
add(month);
}
public JPanel getnewtpye(){
return adjustPanel;
}

}

//界面布局类
class CalendarFrame extends JFrame {
Calendarday dayPanel = new Calendarday();
//可自定义星期面版的
CalendarTop topPanel=new CalendarTop( "日 ", "一 ", "二 ", "三 ", "四 ", "五 ", "六 ");
Calendaradjust adjust=new Calendaradjust();

public CalendarFrame() {
setTitle( "日历 ");
//布局管理器;
setPanelLayout(BorderLayout.NORTH,BorderLayout.CENTER);
add(adjust,BorderLayout.SOUTH);
pack();
}

public void setPanelLayout(String topLayout,String dayLayout){
setLayout(new BorderLayout());
JPanel jptop=topPanel.getnewtype();
JPanel jpday=dayPanel.getnewtpye();
add(jptop,topLayout);
add(jpday,dayLayout);

}
}


public class NewCalendar {
public static void main(String[] args) {
CalendarFrame frame = new CalendarFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

[解决办法]
你的事件处理和printcalendar好像有点问题

读书人网 >J2SE开发

热点推荐