加一碗香菜咯 2022-06-26 20:14 采纳率: 0%
浏览 29

eclipse编写万年历问题

img

代码运行不起来哇,报错如上到底是啥问题啊,请大家帮我看看吧,运行报错给了好多原因,我也换过jdk版本还是一样的问题
import java.awt.;
import java.awt.event.
;
import java.text.;
import java.util.
;
import javax.swing.;
import javax.swing.table.
;

public class WanNianLi extends JFrame implements ActionListener {
private Calendar cal= Calendar.getInstance();
private String [] str = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
private DefaultTableModel dtm = new DefaultTableModel(null,str);
private JTable table = new JTable(dtm);
private JScrollPane sp = new JScrollPane(table);
private JButton bLastMonth = new JButton("上月");
private JButton bNextMonth = new JButton("下月");
private JTextField Year = new JTextField(4);
private JLabel jla=new JLabel("年");

private JTextField jtfMonth = new JTextField(2);
private JPanel p1 = new JPanel(); 
private JPanel p2 = new JPanel();
private JPanel p3 = new JPanel(new BorderLayout());
private JPanel p4 = new JPanel(new GridLayout(2,1));
private JPanel p5 = new JPanel(new BorderLayout());
private JLabel lt = new JLabel();
private int lastTime;

public WanNianLi(){
    super("万年历"); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.getContentPane().setLayout(new BorderLayout(10, 0));

    table.setGridColor(Color.black); 
    table.setColumnSelectionAllowed(true);
    table.setSelectionBackground(Color.BLACK);
    table.setSelectionForeground(Color.green);
    table.setBackground(new Color(184,207,229));
    table.setFont(new Font("黑体",Font.BOLD,30));
    table.setRowHeight(30);

    Year.addActionListener(this);
    bLastMonth.addActionListener(this);
    bNextMonth.addActionListener(this);

    p1.add(Year);
    p1.add(jla);
    p1.add(bLastMonth);
    p1.add(jtfMonth);    
    p1.add(bNextMonth);    
    p3.add(p2, BorderLayout.SOUTH);    
    p4.add(lt);    
    p5.add(p4, BorderLayout.SOUTH);    
    p5.add(sp, BorderLayout.CENTER);    
    p5.add(p1, BorderLayout.NORTH);

    this.getContentPane().add(p5, BorderLayout.CENTER);
    this.getContentPane().add(p3, BorderLayout.EAST);

    String [] strDate = DateFormat.getDateInstance().format(new Date()).split("-");
    cal.set(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1])-1,0);
    showCalendar(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1]), cal);
    jtfMonth.setEditable(false);
    Year.setText(strDate[0]);
    jtfMonth.setText(strDate[1]);

    this.setBounds(200,200,600,320);
    this.setResizable(false);
    this.setVisible(true);
}

public void showCalendar(int localYear, int localMonth, Calendar cld){
    int Days = getDaysOfMonth(localYear, localMonth) + cld.get(Calendar.DAY_OF_WEEK) - 2;
    Object [] ai = new Object[7];
    lastTime = 0;
    
    for (int i = cld.get(Calendar.DAY_OF_WEEK) - 1; i <= Days; i++){
        ai[i % 7] = String.valueOf(i - (cld.get(Calendar.DAY_OF_WEEK) - 2));
        if (i % 7 == 6){
            dtm.addRow(ai);
            ai = new Object[7];
            lastTime++;
        }
    }
    dtm.addRow(ai);
}

public int getDaysOfMonth(int year, int Month) {
    if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8|| Month == 10 || Month == 12){
        return 31;
    }
    if(Month == 4 || Month == 6 || Month == 9 || Month == 11){
        return 30;
    }
    if(year%4 == 0 && year%100 != 0 || year%400 == 0){
        return 29;
    }
    else{
        return 28;
    }

}
public void actionPerformed(ActionEvent e){
    int m, y;
    try{
        if (Year.getText().length() != 4){
            throw new NumberFormatException();
        }
        y = Integer.parseInt(Year.getText());
        m = Integer.parseInt(jtfMonth.getText());
    }
    catch (NumberFormatException ex){
        JOptionPane.showMessageDialog(this, "请输入4位0-9的数字~", "年份有误", JOptionPane.ERROR_MESSAGE);
        return;
    }
    for (int i = 0; i < lastTime+1; i++){
        dtm.removeRow(0);
    }
    
    if(e.getSource() == bLastMonth){
        if(m == 1){
            Year.setText(String.valueOf(--y));
            m = 12;
            jtfMonth.setText(String.valueOf(m));
        }
        else{
            jtfMonth.setText(String.valueOf(--m));
        }
    }
    if(e.getSource() == bNextMonth){
        if(m == 12){
            Year.setText(String.valueOf(++y));
            m = 1;
            jtfMonth.setText(String.valueOf(m));
        }
        else{
            jtfMonth.setText(String.valueOf(++m));
        }
    }
    
    cal.set(y, m-1, 0);
    showCalendar(y, m, cal);    
}

public static void main(String[] args){
    JFrame.setDefaultLookAndFeelDecorated(true);
    JDialog.setDefaultLookAndFeelDecorated(true);
    new WanNianLi();
}

}

  • 写回答

3条回答 默认 最新

  • 今夕何夕2112 2022-06-26 20:41
    关注

    可以发一下出现错误的那几行代码吗,149行,62行,

    评论

报告相同问题?

问题事件

  • 修改了问题 6月26日
  • 修改了问题 6月26日
  • 创建了问题 6月26日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件