2016-04-02 9 views
0

Ich versuche, eine Kalenderanwendung in Java zu erstellen und den Kalenderanzeigeteil erfolgreich abgeschlossen zu haben. Jetzt muss ich Feiertagsnachrichten unter den Kalendereinträgen anzeigen.Wie zeige ich Urlaub in Java?

Wenn der Kalender beispielsweise Aprilmonat anzeigt, dann "1. April - Aprilscherztag". wird zeigen.

Kann jemand mir sagen, wie man das macht? Hier ist mein Code:

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

Ich denke * Das Medium ist die Massage *. –

+0

Ich würde mir vorstellen, dass Sie ein oder mehrere "Ereignisse" -Modelle benötigen, die Informationen über das Ereignis (wie den Tag/Datum, was immer Sie benötigen) und die Beschreibung – MadProgrammer

+1

Was hat das mit Eclipse zu tun? – Learner

Antwort

0

In diesem Zusammenhang haben die Menschen versucht, mit JollyDay Calendar

Möglicherweise möchten Sie dies überprüfen und die entsprechende API verwenden. Sie können bestimmte Feiertagskalender mithilfe der XML-Datei einrichten.

0

Ich empfehle Ihnen, eine Datenstruktur für Ihren Urlaub zu entwerfen. Es gibt mehrere Möglichkeiten. Eine einfache Option ist ein zweidimensionales Array von Strings, bei dem ein String einen Feiertag darstellt und null "kein Feiertag" darstellt. Ich kann oder kann nicht genug für Ihre Anforderungen sein.

Innerhalb Ihrer Schleife suchen Sie nach Ihrer Datenstruktur. Wenn ein Urlaub gefunden wird, machen Sie etwas wie model.setValueAt(day + " " + holiday, i/7 , i%7); Wenn Sie mehr Anleitung benötigen, fügen Sie bitte einen Kommentar hinzu.