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"); //在未产生此事件时,都能执行???
}
}
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"); //在未产生此事件时,都能执行???
}
}
这个方法自动就被调用了,我还没选择任何item的时候,System.out.print("12345")都能够执行,
我用的是 jdk1.4,不知道怎么回事,请哪位老大细心看下吧,在下新手,拜托了,谢谢
其实只要看看这里面的代码就可以了,代码很简单
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+"月");
}
jComboBox1.addItem(i+"月");
}
这里只是往jComboBox1里面添加项目,怎么会产生时间呢?
txq你的方法试了,通不过
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, "时间和日期");
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+"月");
}
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.println("12345"); //在未产生此事件时,都能执行???
}
public static void main(String[] args){
new CalculatorFrame().setVisible(true);
}
}