2016-04-02 31 views
0

我想在Java中創建一個日曆應用程序,並已成功完成日曆顯示部分。現在,我需要在日曆條目下方顯示假日消息。如何在java中顯示假期?

例如,如果日曆顯示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

我想你會需要一個或多個「事件」模型,其中包含有關事件的信息(如日期/日期,您所需要的任何度量)以及描述 – MadProgrammer

+1

這與Eclipse有什麼關係? – Learner

回答

0

在這種情況下,人們使用JollyDay Calendar

您可能要檢查這一點,並使用相關的API嘗試。您可以使用XML文件設置特定的節日日曆。

0

我建議你爲你的假期設計一個數據結構。有幾個選項。一個簡單的選項是一個字符串的二維數組,其中一個字符串表示假日,null表示「不是假期」。我可能會或可能不會滿足您的要求。

在你的循環中你可以查看你的數據結構。如果找到假期,您可以做類似model.setValueAt(day + " " + holiday, i/7 , i%7);如果您需要更多指導,請添加評論。