首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

万年历部分代码,为什么会有错误,请指导,多谢

2012-02-01 
万年历部分代码,为什么会有异常,请指导,谢谢import java.awt.Dimensionimport javax.swing.JFrameimport

万年历部分代码,为什么会有异常,请指导,谢谢
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.JTabbedPane;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import java.util.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class CalculatorFrame extends JFrame {
  JPanel contentPane;
  Border border1 = BorderFactory.createLineBorder(SystemColor.controlText, 2);
  Border border2 = BorderFactory.createLineBorder(SystemColor.controlText, 2);
  JTabbedPane jTabbedPane1 = new JTabbedPane();
  JPanel jPanel1 = new JPanel();
  JPanel jPanel2 = new JPanel();
  Border border3 = BorderFactory.createLineBorder(SystemColor.controlText, 2);
  Border border4 = BorderFactory.createEtchedBorder(EtchedBorder.RAISED,
  new Color(248, 248, 248), new Color(121, 121, 121));
  JComboBox jComboBox1 = new JComboBox();
  JPanel jPanel4 = new JPanel();
  GridLayout gridLayout1 = new GridLayout(7,7);
  java.util.List linkedList = new LinkedList();
  JSpinner jSpinner1;
  JLabel[] jLabel = new JLabel[49];
  GregorianCalendar cal1 = new GregorianCalendar();
  int month = cal1.get(Calendar.MONTH);
  int year = 2007;
  JButton jButton1 = new JButton();


  public CalculatorFrame() {
  try {
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  jbInit();
  } catch (Exception exception) {
  exception.printStackTrace();
  }
  }

  /**
  * Component initialization.
  *
  * @throws java.lang.Exception
  */
  private void jbInit() throws Exception {
  contentPane = (JPanel) getContentPane();
  contentPane.setLayout(null);
  setSize(new Dimension(543, 444));
  setTitle("Calculator");
  jTabbedPane1.setBounds(new Rectangle(19, 37, 494, 336));
  jPanel1.setLayout(null);
  jPanel2.setBorder(border4);
  jPanel2.setBounds(new Rectangle(15, 28, 269, 241));
  jPanel2.setLayout(null);
  jComboBox1.setBounds(new Rectangle(13, 21, 82, 30));
  jComboBox1.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  jComboBox1_actionPerformed(e);
  }
  });
  for(int i=1980;i<3000;i++){
  linkedList.add(new Integer(i));
  }
  jSpinner1 = new JSpinner(new SpinnerListModel(linkedList));
  jSpinner1.setToolTipText("");
  jSpinner1.setBounds(new Rectangle(163, 21, 82, 30));
  jPanel4.setBackground(Color.white);
  jPanel4.setBounds(new Rectangle(13, 65, 232, 157));
  jPanel4.setLayout(gridLayout1);
  jButton1.setBounds(new Rectangle(350, 102, 75, 61));
  jButton1.setText("jButton1");
  contentPane.add(jTabbedPane1);
  jTabbedPane1.add(jPanel1, "时间和日期");
  for(int i = 1;i<=12;i++){
  jComboBox1.addItem(i+"月");
  }
  jLabel[0] = new JLabel("日");
  jPanel4.add(jLabel[0]);
  for(int i =1;i<7;i++){
  jLabel[i] = new JLabel(""+i);
  jPanel4.add(jLabel[i]);
  }


  for(int i =7 ;i<49;i++){
  jLabel[i] = new JLabel();
  jPanel4.add(jLabel[i]);
  }
  jPanel1.add(jPanel2);
  jPanel1.add(jButton1);
  jPanel2.add(jComboBox1);
  jPanel2.add(jSpinner1);
  jPanel2.add(jPanel4);
  getDate1();
  }
  public void getDate1(){
   
  int day = 0;
  int a = 1;

  GregorianCalendar cal = new GregorianCalendar(year,month,1);
  int date = cal.get(Calendar.DAY_OF_WEEK);
  for(int i = 7; i<date-1+7;i++){
  jLabel[i].setText("");
  }
  int mon = cal.get(Calendar.MONTH);
  int year = cal.get(Calendar.YEAR);
  if(!cal.isLeapYear(year)){
  if(mon==1){
  day = 28;
  }
  }
  else{
  if(mon==1){
  day = 29;
  }
  }
  if(mon == 0||mon ==2||mon ==4||mon ==6||mon ==7||mon==9||mon==11){
  day = 31;
  }
  if(mon == 3||mon == 5||mon == 8||mon == 10){
  day = 30;
  }
  for(int i = date-1+7; i<day+date-1+7;i++){
  jLabel[i].setText(""+a);
  a++;
  }
  }

  public void jComboBox1_actionPerformed(ActionEvent e) {
  month = jComboBox1.getSelectedIndex();
  // getDate1(); 不能调用,否则会错,有异常,为什么???
  System.out.print("12345"); //在未产生此事件时,都能执行???
  }
}



[解决办法]
郁闷,你代码又不全.想看看的,可是又要加,唉........
[解决办法]
要想别人给你看代码 关键地方标注释 你这样一发 叫人怎么看啊 象那些生成的代码,看着觉得很累,看了一半 累死!你的分俺不想挣。。。
[解决办法]
for(int i = 1;i <=12;i++){ 
jComboBox1.addItem(i+"月"); 


这里导致了事件的发生

实例化所有的jLabel[]后再写上面那段代码 
如:
 /*for(int i = 1;i <=12;i++){ 
jComboBox1.addItem(i+"月"); 

*/
jLabel[0] = new JLabel("日"); 
jPanel4.add(jLabel[0]); 
for(int i =1;i <7;i++){ 
jLabel[i] = new JLabel(""+i); 
jPanel4.add(jLabel[i]); 

for(int i =7 ;i <49;i++){ 
jLabel[i] = new JLabel(); 
jPanel4.add(jLabel[i]); 

////写到这里来
for(int i = 1;i <=12;i++){ 
jComboBox1.addItem(i+"月"); 


热点排行