帮忙调试一个关于万年历的程序~~~~~~~~ 关于这个话题,以前有很多帖子了,你可以搜一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我调试的结果, 很奇怪在actionPerformed不能add(new JLabel()), 我就改成JPanel了.package muticalendar;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class mutiCalendar2 { public static void main(String[] args) { mutiCalendarFrame2 frame = new mutiCalendarFrame2(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); }}class mutiCalendarFrame2 extends JFrame{ public mutiCalendarFrame2(){ setTitle("canendar"); setSize(300, 300); Container contentPane = getContentPane(); contentPane.add(panel, BorderLayout.CENTER); //add the inputField JPanel inputPanel = new JPanel(); GregorianCalendar now = new GregorianCalendar(); yearField = new JTextField(now.get(Calendar.YEAR)+"",4); JLabel yearLabel = new JLabel("年"); monthField = new JTextField(now.get(Calendar.MONTH)+1+"",2); JLabel monthLabel = new JLabel("月"); JButton button = new JButton("确定"); inputPanel.add(yearField); inputPanel.add(yearLabel); inputPanel.add(monthField); inputPanel.add(monthLabel); inputPanel.add(button); button.addActionListener(new listener()); contentPane.add(inputPanel,BorderLayout.SOUTH); } private class listener implements ActionListener{ public void actionPerformed(ActionEvent evnet){ int year = Integer.parseInt(yearField.getText()); int month = Integer.parseInt(monthField.getText()) - 1; GregorianCalendar calendar = new GregorianCalendar(year, month, 1); days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); firstDayOftheFirstWeek = calendar.get(Calendar.DAY_OF_WEEK); panel.setDate(days, firstDayOftheFirstWeek); } } private JTextField yearField; private JTextField monthField; mutiCalendarPanel panel = new mutiCalendarPanel(); private int days; private int firstDayOftheFirstWeek;}class mutiCalendarPanel extends JPanel{ public mutiCalendarPanel(){ GregorianCalendar calendar = new GregorianCalendar(); int d = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int f = calendar.get(Calendar.DAY_OF_WEEK); setDate(d, f); } public void paintComponent(Graphics g){ super.paintComponent(g); String[] a = new String[32]; String title = "星期日 星期一 星期二 星期三 星期四 星期五 星期六"; g.drawString(title,10,10); for(int i = 0; i< a.length; i++){ a[i] = ""; } for (int i = 0; i <= days-firstDayOftheFirstWeek+1; i++) { a[firstDayOftheFirstWeek + i -1] = (i+1)+""; } int m = 1; int n = 1; String day = ""; for(int i=0; i<a.length; i++){ day = a[i]+""; if((i % 7) == 0){ n++; m = 1; } g.drawString(day, 38*m ,n+10*n); m++; } } public void setDate(int d, int f){ days = d; firstDayOftheFirstWeek = f; repaint(); } private int days; private int firstDayOftheFirstWeek;} 怪异的setDocument JAVA中怎样实现控件随着窗口的大小改变而相应地改变 使用executor的一点疑惑 Object X Object=? 菜鸟蛋的问题..JDBC的 如何提高哈希表的性能? 排序的问题! 急求一正则表达式的做法 .jar 文件失败了吗?为什么?我已经花了3个小时了!Help !~!! 新人求助,帮忙解答一题 assert 与 throw 的问题 如何为一个方法做一个超时控制,如果在时间范围内没有执行结束,抛出超时异常!
成JPanel了.
package muticalendar;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class mutiCalendar2 {
public static void main(String[] args) {
mutiCalendarFrame2 frame = new mutiCalendarFrame2();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class mutiCalendarFrame2 extends JFrame{
public mutiCalendarFrame2(){
setTitle("canendar");
setSize(300, 300);
Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
//add the inputField
JPanel inputPanel = new JPanel();
GregorianCalendar now = new GregorianCalendar();
yearField = new JTextField(now.get(Calendar.YEAR)+"",4);
JLabel yearLabel = new JLabel("年");
monthField = new JTextField(now.get(Calendar.MONTH)+1+"",2);
JLabel monthLabel = new JLabel("月");
JButton button = new JButton("确定");
inputPanel.add(yearField);
inputPanel.add(yearLabel);
inputPanel.add(monthField);
inputPanel.add(monthLabel);
inputPanel.add(button);
button.addActionListener(new listener());
contentPane.add(inputPanel,BorderLayout.SOUTH);
}
private class listener implements ActionListener{
public void actionPerformed(ActionEvent evnet){
int year = Integer.parseInt(yearField.getText());
int month = Integer.parseInt(monthField.getText()) - 1;
GregorianCalendar calendar = new GregorianCalendar(year, month, 1);
days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
firstDayOftheFirstWeek = calendar.get(Calendar.DAY_OF_WEEK);
panel.setDate(days, firstDayOftheFirstWeek);
}
}
private JTextField yearField;
private JTextField monthField;
mutiCalendarPanel panel = new mutiCalendarPanel();
private int days;
private int firstDayOftheFirstWeek;
}
class mutiCalendarPanel extends JPanel{
public mutiCalendarPanel(){
GregorianCalendar calendar = new GregorianCalendar();
int d = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
int f = calendar.get(Calendar.DAY_OF_WEEK);
setDate(d, f);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
String[] a = new String[32]; String title = "星期日 星期一 星期二 星期三 星期四 星期五 星期六";
g.drawString(title,10,10);
for(int i = 0; i< a.length; i++){
a[i] = "";
}
for (int i = 0; i <= days-firstDayOftheFirstWeek+1; i++) {
a[firstDayOftheFirstWeek + i -1] = (i+1)+"";
}
int m = 1;
int n = 1;
String day = "";
for(int i=0; i<a.length; i++){
day = a[i]+"";
if((i % 7) == 0){
n++; m = 1;
}
g.drawString(day, 38*m ,n+10*n);
m++;
} }
public void setDate(int d, int f){
days = d;
firstDayOftheFirstWeek = f;
repaint();
}
private int days;
private int firstDayOftheFirstWeek;
}