📄 showcalendar.java
字号:
package com.exam.ui.calendar;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import com.exam.ui.SuperFrame;
import com.exam.ui.banzhuren.AddBanJiSchedule;
public class ShowCalendar extends SuperFrame {
private static final long serialVersionUID = 1L;
int year;
int month;
int date;
Calendar now = GregorianCalendar.getInstance();
JTable tblInfo = null;
JTableHeader tblHeader = null;
AddBanJiSchedule addBanJiSchedule = null;
public ShowCalendar(AddBanJiSchedule addBanJiSchedule) {
try {
this.addBanJiSchedule = addBanJiSchedule;
init();
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
}
}
public void init() {
this.setTitle("日历");
this.setSize(300, 225);
this.setCenter();
Container ct = this.getContentPane();
JPanel pnlBg = new JPanel();
ct.add(pnlBg);
pnlBg.setLayout(null);
JButton btnPreYear = new JButton("<<");
btnPreYear.setBounds(50, 10, 20, 25);
btnPreYear.setMargin(new Insets(0, 0, 0, 0));
pnlBg.add(btnPreYear);
final JTextField txtYear = new JTextField();
txtYear.setBounds(70, 10, 40, 25);
txtYear.setEditable(false);
txtYear.setForeground(Color.red);
pnlBg.add(txtYear);
JButton btnNextYear = new JButton(">>");
btnNextYear.setBounds(110, 10, 20, 25);
btnNextYear.setMargin(new Insets(0, 0, 0, 0));
pnlBg.add(btnNextYear);
JLabel lblYear = new JLabel("年");
lblYear.setBounds(140, 10, 20, 25);
pnlBg.add(lblYear);
JButton btnPreMonth = new JButton("<<");
btnPreMonth.setBounds(160, 10, 20, 25);
btnPreMonth.setMargin(new Insets(0, 0, 0, 0));
pnlBg.add(btnPreMonth);
final JTextField txtMonth = new JTextField();
txtMonth.setBounds(180, 10, 30, 25);
txtMonth.setEditable(false);
txtMonth.setForeground(Color.red);
pnlBg.add(txtMonth);
JButton btnNextMonth = new JButton(">>");
btnNextMonth.setBounds(210, 10, 20, 25);
btnNextMonth.setMargin(new Insets(0, 0, 0, 0));
pnlBg.add(btnNextMonth);
JLabel lblMonth = new JLabel("月");
lblMonth.setBounds(240, 10, 20, 25);
pnlBg.add(lblMonth);
Object[][] cells = new String[6][7];
Object[] colnames = { "日", "一", "二", "三", "四", "五", "六" };
tblInfo = new JTable(cells, colnames);
tblHeader = tblInfo.getTableHeader();
tblHeader.setReorderingAllowed(false);
tblHeader.setBounds(20, 50, 250, 20);
tblInfo.setBounds(20, 70, 250, 96);
tblInfo.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tblInfo.setCellSelectionEnabled(false);
tblInfo.setGridColor(Color.white);
tblInfo.setDragEnabled(false);
pnlBg.add(tblHeader);
pnlBg.add(tblInfo);
year = now.get(Calendar.YEAR);
month = now.get(Calendar.MONTH) + 1;
date = now.get(Calendar.DATE);
txtYear.setText(" " + year);
if (month < 10) {
txtMonth.setText(" " + month);
} else {
txtMonth.setText(" " + month);
}
show(year, month);
btnPreYear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
year = (Integer.parseInt(txtYear.getText().trim()) - 1);
txtYear.setText(" " + year);
show(year, month);
}
});
btnNextYear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
year = (Integer.parseInt(txtYear.getText().trim()) + 1);
txtYear.setText(" " + year);
show(year, month);
}
});
btnPreMonth.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
month = (Integer.parseInt(txtMonth.getText().trim()) - 1);
if (month < 1) {
month = 12;
year = year - 1;
}
txtYear.setText(" " + year);
if (month < 10) {
txtMonth.setText(" " + month);
} else {
txtMonth.setText(" " + month);
}
show(year, month);
}
});
btnNextMonth.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
month = (Integer.parseInt(txtMonth.getText().trim()) + 1);
if (month > 12) {
month = 1;
year = year + 1;
}
txtYear.setText(" " + year);
if (month < 10) {
txtMonth.setText(" " + month);
} else {
txtMonth.setText(" " + month);
}
show(year, month);
}
});
tblInfo.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
if (arg0.getButton() == MouseEvent.BUTTON1) {
int y = Integer.parseInt(txtYear.getText().trim());
int m = Integer.parseInt(txtMonth.getText().trim());
String value = (String) tblInfo.getValueAt(tblInfo
.getSelectedRow(), tblInfo.getSelectedColumn());
int d = Integer.parseInt(value.trim());
String str = "";
if (m < 10 && d < 10) {
str = y + "0" + m + "0" + d;
} else if (m < 10) {
str = y + "0" + m + "" + d;
} else if (d < 10) {
str = y + m + "0" + d;
} else {
str = y + m + d + "";
}
addBanJiSchedule.txtBanJiDate.setText(str);
dispose();
}
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {
}
public void mouseReleased(MouseEvent arg0) {
}
});
}
public void show(int year, int month) {
showClear();
int count = 0;
int maxDay = getMaxDay(year, month);
now.set(year, (month - 1), 1);
for (int j = 1; j < now.get(Calendar.DAY_OF_WEEK); j++) {
count++;
}
int i = 0;
for (int day = 1; day <= maxDay; day++) {
if (date == day) {
final int x = i;
final int y = count;
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
if (row == x && column == y) {
setForeground(Color.red);
} else {
setForeground(Color.black);
}
return super.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
}
};
for (int j = 0; j < 7; j++) {
tblInfo.getColumnModel().getColumn(j).setCellRenderer(tcr);
}
}
if (day < 10) {
tblInfo.setValueAt(" " + day, i, count);
} else {
tblInfo.setValueAt(" " + day, i, count);
}
count++;
if (count % 7 == 0) {
i++;
count = 0;
}
}
}
public int getMaxDay(int year, int month) {
int maxDay = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
maxDay = 31;
break;
case 4:
case 6:
case 9:
case 11:
maxDay = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
maxDay = 29;
} else {
maxDay = 28;
}
}
return maxDay;
}
public void showClear() {
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
tblInfo.setValueAt("", i, j);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -