📄 kalendar.txt
字号:
import java.awt.*;
import javax.swing.*;
import java.util.Calendar;
import java.util.Date;
import java.beans.*;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.border.*;
public class Kalendar extends JDialog {
int fnR=212;
int fnG=208;
int fnB=200;
int fontSize=20;
Date retDate=new Date();
String strmaxDate="";
String strminDate="";
Date slin=new Date();
int[] days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
JPanel panelCenter = new JPanel();
BorderLayout borderLayoutCenter = new BorderLayout();
JPanel jPanelBody = new JPanel();
JPanel jPanelNorth = new JPanel();
JBAPanel[] JBAPanel ={
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(2,fnR,fnG,fnB),
new JBAPanel(1,fnR,fnG,fnB),//10--------7
new JBAPanel(1,fnR,fnG,fnB),//11--------8
new JBAPanel(1,fnR,fnG,fnB),//12--------9
new JBAPanel(1,fnR,fnG,fnB),//13--------10
new JBAPanel(1,fnR,fnG,fnB),//14--------11
new JBAPanel(1,fnR,fnG,fnB),//15--------12
new JBAPanel(1,fnR,fnG,fnB),//16--------13
new JBAPanel(1,fnR,fnG,fnB),//20--------14
new JBAPanel(1,fnR,fnG,fnB),//21--------15
new JBAPanel(1,fnR,fnG,fnB),//22--------16
new JBAPanel(1,fnR,fnG,fnB),//23--------17
new JBAPanel(1,fnR,fnG,fnB),//24--------18
new JBAPanel(1,fnR,fnG,fnB),//25--------19
new JBAPanel(1,fnR,fnG,fnB),//26--------20
new JBAPanel(1,fnR,fnG,fnB),//30--------21
new JBAPanel(1,fnR,fnG,fnB),//31--------22
new JBAPanel(1,fnR,fnG,fnB),//32--------23
new JBAPanel(1,fnR,fnG,fnB),//33--------24
new JBAPanel(1,fnR,fnG,fnB),//34--------25
new JBAPanel(1,fnR,fnG,fnB),//35--------26
new JBAPanel(1,fnR,fnG,fnB),//36--------27
new JBAPanel(1,fnR,fnG,fnB),//40--------28
new JBAPanel(1,fnR,fnG,fnB),//41--------29
new JBAPanel(1,fnR,fnG,fnB),//42--------30
new JBAPanel(1,fnR,fnG,fnB),//43--------31
new JBAPanel(1,fnR,fnG,fnB),//44--------32
new JBAPanel(1,fnR,fnG,fnB),//45--------33
new JBAPanel(1,fnR,fnG,fnB),//46--------34
new JBAPanel(1,fnR,fnG,fnB),//50--------35
new JBAPanel(1,fnR,fnG,fnB),//51--------36
new JBAPanel(1,fnR,fnG,fnB),//52--------37
new JBAPanel(1,fnR,fnG,fnB),//53--------38
new JBAPanel(1,fnR,fnG,fnB),//54--------39
new JBAPanel(1,fnR,fnG,fnB),//55--------40
new JBAPanel(1,fnR,fnG,fnB),//56--------41
new JBAPanel(1,fnR,fnG,fnB),//69--------42
new JBAPanel(1,fnR,fnG,fnB),//61--------43
new JBAPanel(1,fnR,fnG,fnB),//62--------44
new JBAPanel(1,fnR,fnG,fnB),//63--------45
new JBAPanel(1,fnR,fnG,fnB),//64--------46
new JBAPanel(1,fnR,fnG,fnB),//65--------47
new JBAPanel(1,fnR,fnG,fnB),//66--------48
};
JComboBox jComboBoxMonth;
JSpinner jSpinner = new JSpinner();
JLabel jLabelMonth = new JLabel();
JLabel jLabelYear = new JLabel();
TitledBorder titledBorder1;
JPanel jPanelHead = new JPanel();
JPanel jPanelBottom = new JPanel();
BorderLayout borderLayoutBody = new BorderLayout();
public Kalendar(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public Kalendar() {
this(null, "", false);
}
private void jbInit() throws Exception {
titledBorder1 = new TitledBorder("");
panelCenter.setLayout(borderLayoutCenter);
jPanelNorth.setBackground(Color.gray);
jPanelNorth.setBorder(BorderFactory.createRaisedBevelBorder());
JBAPanel[0].SetJBAPLabel(" 日");
JBAPanel[1].SetJBAPLabel(" 一");
JBAPanel[2].SetJBAPLabel(" 二");
JBAPanel[3].SetJBAPLabel(" 三");
JBAPanel[4].SetJBAPLabel(" 四");
JBAPanel[5].SetJBAPLabel(" 五");
JBAPanel[6].SetJBAPLabel(" 六");
jLabelMonth.setFont(new java.awt.Font("Dialog", 1, fontSize));
jLabelMonth.setForeground(Color.white);
jLabelMonth.setText("选择月");
jLabelYear.setFont(new java.awt.Font("Dialog", 1, fontSize));
jLabelYear.setForeground(Color.white);
jLabelYear.setText("选择年");
Calendar calendar=Calendar.getInstance();
jComboBoxMonth = new JComboBox();
for (int i = 1; i <= 12; i++) {
jComboBoxMonth.addItem(new Integer(i));
}
jComboBoxMonth.setSelectedIndex(calendar.get(Calendar.MONTH));
jComboBoxMonth.setBackground(Color.white);
jComboBoxMonth.setFont(new java.awt.Font("DialogInput", 1, fontSize+6));
jComboBoxMonth.setMinimumSize(new Dimension(100, 30));
jComboBoxMonth.setPreferredSize(new Dimension(100, 26));
jComboBoxMonth.addItemListener(new Clock_jComboBoxMonth_itemAdapter(this));
jSpinner.setValue(new Integer(calendar.get(Calendar.YEAR)));
leapYear(calendar.get(Calendar.YEAR));
jSpinner.setEditor(new JSpinner.NumberEditor(jSpinner, "0000"));
jSpinner.setFont(new java.awt.Font("DialogInput", 1, fontSize+6));
jSpinner.setPreferredSize(new Dimension(100, 30));
jSpinner.addChangeListener(new Clock_jSpinner_changeAdapter(this));
jPanelBottom.setBackground(new Color(fnR,fnG,fnB));
jPanelBody.setLayout(borderLayoutBody);
jPanelHead.setBackground(new Color(255,164,190));
jPanelHead.setBorder(titledBorder1);
this.addMouseListener(new Clock_this_mouseAdapter(this));
this.setResizable(false);
jPanelBody.add(jPanelBottom, BorderLayout.CENTER);
getContentPane().add(panelCenter);
panelCenter.add(jPanelBody, BorderLayout.CENTER);
jPanelBody.add(jPanelHead, BorderLayout.NORTH);
for(int i=0;i<JBAPanel.length;i++){
if(i<7){
JBAPanel[i].setBorder(null);
JBAPanel[i].setBackground(jPanelHead.getBackground());
jPanelHead.add(JBAPanel[i], null);
}else{
JBAPanel[i].jButton.addFocusListener(new Clock_jJBAPaneljButton_focusAdapter(this,i));
jPanelBottom.add(JBAPanel[i], null);
}
}
this.getContentPane().add(jPanelNorth, BorderLayout.NORTH);
jPanelNorth.add(jLabelMonth, null);
jPanelNorth.add(jComboBoxMonth, null);
jPanelNorth.add(jLabelYear, null);
jPanelNorth.add(jSpinner, null);
SetShowDate();
}
void SetShowDate(){
int yy=0;
int mm=0;
int dd=0;
int zz=0;
Integer yyI=new Integer(jSpinner.getValue().toString());
yy=yyI.intValue();
Integer mmI=new Integer(jComboBoxMonth.getSelectedItem().toString());
mm=mmI.intValue();
dd=1;
dd=getWeekday(yy,mm,dd);
SetJBLabel(dd,days_in_month[jComboBoxMonth.getSelectedIndex()]);
}
void SetJBLabel(int min,int max){
int num=1;
String jpname="hjp";
for(int i=7;i<JBAPanel.length;i++){
if(i<(min+6) ||i>=(max+6+min)){
JBAPanel[i].SetJBAPLabel("");
JBAPanel[i].setBorder(null);
JBAPanel[i].jButton.setVisible(false);
}else{
JBAPanel[i].SetJBAPLabel(new Integer(num).toString());
JBAPanel[i].setBorder(BorderFactory.createRaisedBevelBorder());
JBAPanel[i].jButton.setVisible(true);
num++;
}
}
}
void leapYear(int year) {
if ((year%4 == 0) && (year%100!=0) || (year%400 == 0)) {
days_in_month[1]=29;
} else {
days_in_month[1]=28;
}
}
int getWeekday(int yy,int mm){
slin=SetCurDate(yy,mm-1,1);
int week=0;
week=Getweek(slin);
return week;
}
int Getweek(Date dat){
return dat.getDay();
}
Date SetCurDate(int yy,int mm,int dd){
slin.setYear(yy);
slin.setMonth(mm);
slin.setDate(dd);
return slin;
}
int getWeekday(int yy,int mm,int dd){
slin=SetCurDate(yy,mm-1,dd);
int week=0;
week=Getweek(slin);
return week;
}
void jSpinner_stateChanged(ChangeEvent e) {
Integer i=new Integer(jSpinner.getValue().toString());
int ii=i.intValue();
Calendar dd=Calendar.getInstance();
if(ii<0) jSpinner.setValue(new Integer(dd.get(Calendar.YEAR)));
if(ii>9999) jSpinner.setValue(new Integer(dd.get(Calendar.YEAR)));
i=new Integer(jSpinner.getValue().toString());
ii=i.intValue();
leapYear(ii);
SetShowDate();
}
void jComboBoxMonth_itemStateChanged(ItemEvent e) {
SetShowDate();
}
void this_mouseClicked(MouseEvent e) {
for(int i=0;i<JBAPanel.length;i++)
if(JBAPanel[i].GetDisflag()){
this.dispose();
}
}
void jJBAPaneljButton_focusGained(FocusEvent e,int numi) {
int yy=2000;
int mm=3;
int dd=1;
Integer yyI=new Integer(jSpinner.getValue().toString());
yy=yyI.intValue();
Integer mmI=new Integer(jComboBoxMonth.getSelectedItem().toString());
mm=mmI.intValue();
Integer ddI=new Integer(JBAPanel[numi].GetJBAPLabel());
dd=ddI.intValue();
strminDate=yyI.toString()+"-"+mmI.toString()+"-"+ddI.toString();
strmaxDate=yyI.toString()+"-";
if(mm<10) strmaxDate=strmaxDate+"0"+mmI.toString()+"-";
else strmaxDate=strmaxDate+mmI.toString()+"-";
if(dd<10) strmaxDate=strmaxDate+"0"+ddI.toString();
else strmaxDate=strmaxDate+ddI.toString();
retDate=SetCurDate(yy,mm,dd);;
System.out.println(yy+"-"+mm+"-"+dd);
this.dispose();
}
public Date GetRetDate(){
return retDate;
}
public String GetStrminDate(){
return strminDate;
}
public String GetStrmaxDate(){
return strmaxDate;
}
public static void main(String[] args) {
CalendarComboBox dialog=new CalendarComboBox();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
dialog.setSize(500,400);
Dimension frameSize = dialog.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
dialog.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
dialog.setVisible(true);
}
}
class Clock_jSpinner_changeAdapter implements javax.swing.event.ChangeListener {
Kalendar adaptee;
Clock_jSpinner_changeAdapter(Kalendar adaptee) {
this.adaptee = adaptee;
}
public void stateChanged(ChangeEvent e) {
adaptee.jSpinner_stateChanged(e);
}
}
class Clock_jComboBoxMonth_itemAdapter implements java.awt.event.ItemListener {
Kalendar adaptee;
Clock_jComboBoxMonth_itemAdapter(Kalendar adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.jComboBoxMonth_itemStateChanged(e);
}
}
class Clock_this_mouseAdapter extends java.awt.event.MouseAdapter {
Kalendar adaptee;
Clock_this_mouseAdapter(Kalendar adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.this_mouseClicked(e);
}
}
class Clock_jJBAPaneljButton_focusAdapter extends java.awt.event.FocusAdapter {
Kalendar adaptee;
int num=0;
Clock_jJBAPaneljButton_focusAdapter(Kalendar adaptee,int numi) {
this.adaptee = adaptee;
this.num=numi;
}
public void focusGained(FocusEvent e) {
adaptee.jJBAPaneljButton_focusGained(e,num);
}
}
class JBAPanel extends JPanel{
int fnR=100;
int fnG=100;
int fnB=100;
int flag=0;
boolean disflag=false;
public JButton jButton = new JButton();
BorderLayout borderLayout1 = new BorderLayout();
JLabel jLabel = new JLabel();
public JBAPanel() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public JBAPanel(int flag,int fnR,int fnG,int fnB) {
this.flag=flag;
this.fnR=fnR;
this.fnG=fnG;
this.fnB=fnB;
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
if(flag==1 || flag==2){
this.setMaximumSize(new Dimension(60, 35));
this.setMinimumSize(new Dimension(60, 35));
this.setPreferredSize(new Dimension(60, 35));
this.setBackground(new Color(fnR,fnG,fnB));
this.setBorder(BorderFactory.createRaisedBevelBorder());
this.setDebugGraphicsOptions(0);
this.setLayout(borderLayout1);
if(flag==1){
jButton.setFont(new java.awt.Font("DialogInput", 1, 15));
jButton.setHorizontalAlignment(SwingConstants.CENTER);
jButton.addActionListener(new JBAPanel_jButton_actionAdapter(this));
jButton.addMouseListener(new JBAPanel_jButton_mouseAdapter(this));
this.add(jButton, BorderLayout.CENTER);
}
if(flag==2){
jLabel.setFont(new java.awt.Font("DialogInput", 1,25));
this.add(jLabel, BorderLayout.CENTER);
}
}
this.addMouseListener(new JBAPanel_this_mouseAdapter(this));
}
public void SetJBAPLabel(String str){
if(flag==2){
jLabel.setText(str);
}
else
jButton.setText(str);
}
public String GetJBAPLabel(){
if(flag==2){
return jLabel.getText();
}
else
return jButton.getText();
}
public boolean GetDisflag(){
return disflag;
}
void this_mouseEntered(MouseEvent e) {
if(flag==1){
if (this.getBorder() == null){
this.setBackground(new Color(fnR, fnG, fnB));
jButton.setBackground(new Color(fnR,fnG,fnB));
}
else
this.setBackground(new Color(104,90, 190));
jButton.setBackground(new Color(104,90, 190));
}
}
void this_mouseExited(MouseEvent e) {
if(flag==1){
this.setBackground(new Color(fnR,fnG, fnB));
jButton.setBackground(new Color(fnR, fnG,fnB));
}
}
void this_mouseClicked(MouseEvent e) {
disflag=true;
}
void jButton_mouseClicked(MouseEvent e) {
disflag=true;
}
void jButton_actionPerformed(ActionEvent e) {
disflag=true;
}
void jButton_mouseEntered(MouseEvent e) {
if(flag==1){
if (this.getBorder() == null){
this.setBackground(new Color(fnR, fnG, fnB));
jButton.setBackground(new Color(fnR, fnG,fnB));
}
else
this.setBackground(new Color(104,90, 190));
jButton.setBackground(new Color(104,90, 190));
}
}
void jButton_mouseExited(MouseEvent e) {
if(flag==1){
this.setBackground(new Color(fnR,fnG, fnB));
jButton.setBackground(new Color(fnR, fnG,fnB));
}
}
}
class JBAPanel_this_mouseAdapter extends java.awt.event.MouseAdapter {
JBAPanel adaptee;
JBAPanel_this_mouseAdapter(JBAPanel adaptee) {
this.adaptee = adaptee;
}
public void mouseEntered(MouseEvent e) {
adaptee.this_mouseEntered(e);
}
public void mouseExited(MouseEvent e) {
adaptee.this_mouseExited(e);
}
public void mouseClicked(MouseEvent e) {
adaptee.this_mouseClicked(e);
}
}
class JBAPanel_jButton_mouseAdapter extends java.awt.event.MouseAdapter {
JBAPanel adaptee;
JBAPanel_jButton_mouseAdapter(JBAPanel adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.jButton_mouseClicked(e);
}
public void mouseEntered(MouseEvent e) {
adaptee.jButton_mouseEntered(e);
}
public void mouseExited(MouseEvent e) {
adaptee.jButton_mouseExited(e);
}
}
class JBAPanel_jButton_actionAdapter implements java.awt.event.ActionListener {
JBAPanel adaptee;
JBAPanel_jButton_actionAdapter(JBAPanel adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -