我正在尝试用Java创建日历应用程序并成功完成日历显示部分。现在,我需要在日历条目下方显示Holiday消息。
例如,如果日历显示4月份,那么“4月1日 - 愚人节”。将显示。
有人可以告诉我该怎么做吗?这是我的代码:
import java.time.Month;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class SwingCalendar extends JFrame {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
private JLabel msglabel;
DefaultTableModel model;
Calendar cal = new GregorianCalendar();
JLabel label;
SwingCalendar() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Swing Calandar");
this.setSize(300,200);
this.setLayout(new BorderLayout());
this.setVisible(true);
label = new JLabel();
label.setHorizontalAlignment(SwingConstants.CENTER);
JButton b1 = new JButton("Back");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cal.add(Calendar.MONTH, -1);
updateMonth();
}
});
JButton b2 = new JButton("Next");
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cal.add(Calendar.MONTH, +1);
updateMonth();
}
});
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(b1,BorderLayout.WEST);
panel.add(label,BorderLayout.CENTER);
panel.add(b2,BorderLayout.EAST);
String [] columns = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
model = new DefaultTableModel(null,columns);
JTable table = new JTable(model);
JScrollPane pane = new JScrollPane(table);
this.add(panel,BorderLayout.NORTH);
this.add(pane,BorderLayout.CENTER);
this.updateMonth();
}
void updateMonth() {
cal.set(Calendar.DAY_OF_MONTH, 1);
String month = cal.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.US);
int year = cal.get(Calendar.YEAR);
label.setText(month + " " + year);
int startDay = cal.get(Calendar.DAY_OF_WEEK);
int numberOfDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int weeks = cal.getActualMaximum(Calendar.WEEK_OF_MONTH);
model.setRowCount(0);
model.setRowCount(weeks);
int i = startDay-1;
for(int day=1;day<=numberOfDays;day++){
model.setValueAt(day, i/7 , i%7 );
i = i + 1;
}
}
public static void main(String[] arguments) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingCalendar sc = new SwingCalendar();
}
private void showJPanelDemo(){
headerLabel.setText("Container in action: JPanel");
msglabel = new JLabel("Welcome to TutorialsPoint SWING Tutorial.", JLabel.CENTER);
JPanel panel = new JPanel();
panel.setBackground(Color.magenta);
panel.setLayout(new FlowLayout());
panel.add(msglabel);
controlPanel.add(panel);
mainFrame.setVisible(true);
}
}
答案 0 :(得分:0)
在此背景下,人们尝试使用JollyDay Calendar
您可能需要检查并使用相关的API。您可以使用XML文件设置特定的假日日历。
答案 1 :(得分:0)
我建议你为假期设计一个数据结构。有几种选择。一个简单的选项是字符串的二维数组,其中String表示假日,null表示&#34;不是假日&#34;。我可能会或可能不满足您的要求。
在循环中,您可以查找数据结构。如果找到假期,您会执行类似model.setValueAt(day + " " + holiday, i/7 , i%7);
的操作。如果您需要更多指导,请添加评论。