📄 calendardesign.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.ParseException;
import java.util.Calendar;
public class CalendarDesign extends JFrame implements ActionListener{
private Calendar date;
private JComboBox yearCombo;
private JComboBox monthCombo;
private JTextField dayField;
private Popup mypopup=null;
private Point pos;
private JPanel datePanel,panel1,dayweekPanel,weekPanel,dayPanel,wholePanel;
private Container container;
private JButton up,down,clickdate;
int number;
private JButton exit;
private JPanel exitPanel,panelall;
int clickflag=1;
private JTextField showdate;
private JLabel today=new JLabel();
private String week[]={" 日 "," 一 "," 二 "," 三 "," 四 "," 五 "," 六 "};
private String month[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
private JLabel weeklabel[]=new JLabel[7];
private JToggleButton buttonDay[]=new JToggleButton[42],buttonMid;//JToggleButton与JButton的区别一个按下去弹不上来,一个能弹上来
public CalendarDesign()
{
JPanel mid=new JPanel();
date= Calendar.getInstance();
//System.out.println("YEAR: " + date.get(Calendar.YEAR));
//System.out.println("MONTH: " + date.get(Calendar.MONTH));
//System.out.println("DAY_OF_MONTH: " + date.get(Calendar.DAY_OF_MONTH));
wholePanel=new JPanel();
wholePanel.setLayout(new BorderLayout());
number=date.get(Calendar.YEAR)/10;
container=getContentPane();
showdate=new JTextField(6);
showdate.setText(date.get(Calendar.YEAR)+"-"+(date.get(Calendar.MONDAY)+1)+"-"+date.get(Calendar.DAY_OF_MONTH));
showdate.setBackground(Color.white);
showdate.setEditable(false);
clickdate=new JButton(new ImageIcon("click.jpg"));
clickdate.setPreferredSize(new Dimension(20,20));
clickdate.addActionListener(this);
mid.add(showdate);
mid.add(clickdate);
container.add(mid);
datePanel=new JPanel();
up=new JButton("▲");
up.setPreferredSize(new Dimension(20,15));
up.setMargin(new Insets(0,0,0,0));
up.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
number++;
yearCombo.removeAllItems();
for(int i = 0;i<=9;i++)
yearCombo.addItem(" "+number+i+" ");
showday();
}
});
down=new JButton("▼");
down.setPreferredSize(new Dimension(20,15));
down.setMargin(new Insets(0,0,0,0));
down.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
yearCombo.removeAllItems();
number--;
for(int i = 0;i<=9;i++)
yearCombo.addItem(" "+number+i+" ");
showday();
}
});
panel1=new JPanel();
panel1.setLayout(new GridLayout(2,1));
panel1.add(up);
panel1.add(down);
datePanel.add(panel1);
yearCombo=new JComboBox();
yearCombo.setAlignmentX(40);
yearCombo.setMaximumRowCount(10);
for(int i = 0;i<=9;i++)
yearCombo.addItem(" "+number+i+" ");
yearCombo.setSelectedIndex(date.get(Calendar.YEAR)%100);
yearCombo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
date.set(Calendar.YEAR,number*10+yearCombo.getSelectedIndex());
System.out.println(date.get(Calendar.YEAR));
showday();
}
});
datePanel.add(yearCombo);
monthCombo=new JComboBox(month);
monthCombo.setSize(60,26);
monthCombo.setMaximumRowCount(12);
monthCombo.setSelectedIndex(date.get(Calendar.MONTH));
monthCombo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
date.set(Calendar.MONTH,monthCombo.getSelectedIndex());
System.out.println(date.get(Calendar.MONTH));
showday();
}
});
datePanel.add(monthCombo);
dayField=new JTextField();
dayField.setPreferredSize(new Dimension(50,26));
dayField.setText(String.valueOf(date.get(Calendar.DAY_OF_MONTH)));
dayField.setHorizontalAlignment(SwingConstants.CENTER);
dayField.setEditable(true);
dayField.setBackground(Color.white);
datePanel.add(dayField);
wholePanel.add(datePanel,"North");
dayweekPanel=new JPanel();
dayweekPanel.setLayout(new BorderLayout());
weekPanel=new JPanel();
for(int i=0;i<7;i++)
{
weeklabel[i]=new JLabel(week[i]);
weekPanel.add(weeklabel[i]);
}
dayweekPanel.add(weekPanel,"North");
dayPanel=new JPanel();
dayPanel.setLayout(new GridLayout(6,7));
for(int i=0;i<42;i++)
{
buttonDay[i]=new JToggleButton(" ");
buttonDay[i].setBorder(null);
buttonDay[i].setBackground(SystemColor.textInactiveText);
buttonDay[i].setPreferredSize(new Dimension(20,20));
buttonDay[i].setFont(new Font("SansSerif",Font.PLAIN,15));
dayPanel.add(buttonDay[i]);
buttonDay[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
int day=Integer.parseInt(event.getActionCommand());
date.set(Calendar.DAY_OF_MONTH,day);
//System.out.println(date.get(Calendar.DAY_OF_WEEK));
buttonMid.setSelected(false);
JToggleButton buttonClik=(JToggleButton)event.getSource();
buttonClik.setSelected(true);
buttonMid=buttonClik;
dayField.setText(""+day);
showdate.setText(date.get(Calendar.YEAR)+"-"+(date.get(Calendar.MONDAY)+1)+"-"+day);
}
});
}
exit=new JButton(new ImageIcon("exit.jpg"));
exit.setPreferredSize(new Dimension(17,15));
exit.setMargin(new Insets(0,0,0,0));
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
mypopup.hide();
clickflag=1;
}
});
Calendar todaydate= Calendar.getInstance();
today.setText(" 今天 "+todaydate.get(Calendar.YEAR)+"-"+(todaydate.get(Calendar.MONDAY)+1)+"-"+todaydate.get(Calendar.DAY_OF_MONTH));
today.setHorizontalAlignment(SwingConstants.CENTER);
exitPanel=new JPanel();
exitPanel.setLayout(new BorderLayout());
exitPanel.add(today,"West");
exitPanel.add(exit,"East");
panelall=new JPanel(new BorderLayout());
panelall.setBackground(UIManager.getColor("InternalFrame.activeTitleGradient"));
panelall.setBorder(BorderFactory.createEtchedBorder());
panelall.add(exitPanel,"North");
panelall.add(wholePanel,"Center");
dayweekPanel.add(dayPanel,"Center");
wholePanel.add(dayweekPanel,"Center");
setSize(250,250);
setVisible(true);
}
public static void main(String[] args)throws ParseException {
CalendarDesign app=new CalendarDesign();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void showday()
{
int num=date.get(Calendar.DAY_OF_MONTH);
int num1=date.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
date.set(Calendar.DAY_OF_MONTH,1);
int n=1;
int numm=date.get(Calendar.DAY_OF_WEEK);
date.set(Calendar.DAY_OF_MONTH,num);
for(int i=0;i<42;i++)
{
if(i>=numm-1&&i<numm+num1-1)
{
buttonDay[i].setText(""+n);
buttonDay[i].setEnabled(true);
if(n==num)
{
buttonDay[i].setSelected(true);
buttonMid=buttonDay[i];
}
else buttonDay[i].setSelected(false);
n++;
}
else
{
buttonDay[i].setEnabled(false);
buttonDay[i].setSelected(false);
buttonDay[i].setText(" ");
}
}
}
public void actionPerformed(ActionEvent event) {
if(clickflag==1)
{
pos=this.getLocationOnScreen();
mypopup = PopupFactory.getSharedInstance().getPopup(this,
panelall,pos.x+down.getLocation().x+200,pos.y+down.getLocation().y+55);
mypopup.show();
showday();
clickflag=0;
}
else{
mypopup.hide();clickflag=1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -