import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Scanner;import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;public class TestRiLi extends JFrame{
boolean flag =false;
JPanel j1 = new JPanel();
JPanel j2 = new JPanel();
JTextArea j11 =new JTextArea(); JLabel j21 =new JLabel("选择年份");
JComboBox jbb1;
JLabel j22 =new JLabel("选择月份");
JComboBox jbb2;
String[] years;
String[] months;
String value1;
String value2;
 int year =2000;
 int month=1;
String a ="日\t一\t二\t三\t四\t五\t六";
Border border = new EtchedBorder(//浮雕化边框
EtchedBorder.RAISED, Color.white, new Color(148, 145, 140));
public TestRiLi(){
years =new String[20];
months =new String[12];
for(int i=0;i<years.length;i++){
years[i]=String.valueOf(2000+i);
}
for(int i=0;i<months.length;i++){
months[i]=String.valueOf(i+1);
} jbb1 =new JComboBox(years);
jbb2 =new JComboBox(months);
jbb1.setEditable(false);
jbb2.setEditable(false);
} public void luanchFrame(){ this.setSize(700, 300);
this.setLocation(100, 100);
this.setResizable(false);

add(j1,new BorderLayout().CENTER);
add(j2,new BorderLayout().EAST);
j1.add(j11);
j1.setBorder(border);
//j1.setBackground(Color.CYAN);
j2.setLayout(new GridLayout(4,1));
j2.add(j21);
j2.setBorder(border);
j2.add(jbb1);
j2.setBorder(border);
j2.add(j22);
j2.setBorder(border);
j2.add(jbb2);
j2.setBorder(border);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent arg0) {
System.exit(0);
} }); this.setVisible(true);
ss();
} public static void main(String[] args){
new TestRiLi().luanchFrame();
}
public void ss(){


jbb1.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
value1=(String)(e.getItem());
year =Integer.parseInt(value1);
} });
jbb2.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
value2=(String)(e.getItem());
month =Integer.parseInt(value2);
} });

if(value1!=null&&value2!=null){

ym();
}
}
public void  ym(){
j11.setText(j11.getText()+a+"\n");
Scanner in=new Scanner(System.in);
while(true){
int sum=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum+=366;
}else{
sum+=365;
}
}
for(int i=1;i<month;i++){
if(i==2){
if(year%4==0&&year%100!=0||year%400==0){
sum+=29;
}else{
sum+=28;
}
}else{
if(i==4||i==6||i==9||i==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=1;
int wekday=sum%7;
for(int i=1;i<=wekday;i++){
j11.setText(j11.getText()+"\t");
}
int day=0;
if(year%4==0&&year%100!=0||year%400==0){
day=29;
}else{
day=28;
}if(month!=2){
if(month==4||month==6||month==9||month==11){
day=30;
}else{
day=31;
}
}
for(int i=1;i<=day;i++){
if(sum%7==6){
j11.setText(j11.getText()+i+"\t"+"\n");
}else{
j11.setText(j11.getText()+i+"\t");
}
sum++;
} } }
}
程序如上述,自己编的!现在能运行,但只有图形界面,无法在组件内显示数据!
有个地方没整通,现在此程序运行时,无法运行到ym()方法,因为value1&&value2均为null,
无法赋值给后面的year和month.
问题点:
如何让点击JComboBox内的组件后,先将值传递给value1&&value2然后传递给year和month.
求解日历图形String