Net Beans

  • Thread-Ersteller Thread-Ersteller Howard
  • Erstellungsdatum Erstellungsdatum

Howard

L20: Enlightened
Thread-Ersteller
Seit
22 Sep 2006
Beiträge
27.871
Arbeitet hier jemand mit Net Beans? Ich bräcuhte mal Hilfe und zwar will ich nen Adventskalender machen und will wissen, wie man das macht, wenn man den an die Uhr ketten will, also am 23. soll das Programm auch nur das 23. Türchen öffnen.

PS: Arbeite mit JAVA.
 
Arbeitet hier jemand mit Net Beans? Ich bräcuhte mal Hilfe und zwar will ich nen Adventskalender machen und will wissen, wie man das macht, wenn man den an die Uhr ketten will, also am 23. soll das Programm auch nur das 23. Türchen öffnen.

PS: Arbeite mit JAVA.
24 Vektorelemente oder ein 24 elementiges Array mit Objekten der Klasse Adventstür speichern. Die Klasse Adventstür hat ein booleschen Wert geoeffnet den du abhängig vom Datum auf true für geöffnet hast oder auf false für geschlossen. Das aktuelle Datum kriegst du über die Calendar Klasse http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html
Alternativ kannst du eine statische int variable in der Adventstürklasse erstellen in der du das jeweils immer den Index des geöffneten Türchens angibst.
 
Hier is Code, den ich auch mal für nen Kalender benutzt habe. Musst ihn nur noch bisschen verändern, um den Tag kenntlich zu machen an dem sich ein "Türchen" öffnen soll.
Kannst natürlich statt Buttons auch Labels, etc. nehmen.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class JCalendar
extends JPanel {

/**
*
*/
private static final long serialVersionUID = 1L;

private GregorianCalendar _calendar = new GregorianCalendar();

private DateFormatSymbols _dateSymbols = new DateFormatSymbols();

private SimpleDateFormat _formatMY = new SimpleDateFormat("MMMM yyyy");

private int _firstDayOfWeek = _calendar.getFirstDayOfWeek();

private final JLabel _monthYear = new JLabel("", SwingUtilities.CENTER);

private final JLabel[] _daysOfWeek = new JLabel[7];

private final JButton[] _daysNumber = new JButton[42];

private final ActionListener _changeMonth = new ActionListener() {
public void actionPerformed(final ActionEvent ae) {
final int nb = "next".equals(ae.getActionCommand()) ? 1 : -1;
_calendar.add(Calendar.MONTH, nb);
updateMonthYear();
updateDaysNumber();
}
};

public JCalendar() {
setLayout(new BorderLayout());
// Month Panel
final JPanel monthPanel = new JPanel();
final JButton previous = new JButton("<<");
previous.addActionListener(_changeMonth);
final JButton next = new JButton(">>");
next.addActionListener(_changeMonth);
next.setActionCommand("next");
_monthYear.setPreferredSize(new Dimension(120, 20));
monthPanel.add(previous);
monthPanel.add(_monthYear);
monthPanel.add(next);
add(monthPanel, BorderLayout.NORTH);
// Day Panel
final JPanel dayPanel = new JPanel();
dayPanel.setLayout(new GridLayout(7, 7));
for (int i = 0; i < 7; ++i)
dayPanel
.add(_daysOfWeek = new JLabel("", SwingUtilities.CENTER));
for (int i = 0; i < _daysNumber.length; ++i)
dayPanel.add(_daysNumber = new JButton());
add(dayPanel, BorderLayout.CENTER);
// Remplissage des composants
updateMonthYear();
updateDaysOfWeek();
updateDaysNumber();
}

// Affiche le mois et l'année en cours
private void updateMonthYear() {
_monthYear.setText(_formatMY.format(_calendar.getTime()));
}

// Affiche les jours de la semaine
private void updateDaysOfWeek() {
final String[] weekDays = _dateSymbols.getShortWeekdays();
for (int i = 1; i < weekDays.length; ++i) {
final int index = (i - 2 + _firstDayOfWeek) % 7 + 1;
_daysOfWeek[i - 1].setText(weekDays[index]);
}
}

// Affiche le numéro des jours
private void updateDaysNumber() {
final Date tmp = _calendar.getTime();
_calendar.set(Calendar.DAY_OF_MONTH, 1);
final int firstDay = _calendar.get(Calendar.DAY_OF_WEEK);
final int LocalFirstDay = (firstDay - _firstDayOfWeek + 7) % 7 + 1;
boolean full = false;
for (int i = 0; i < _daysNumber.length; ++i) {
// Détermine si le composant est affiché ou non
final boolean isNotEmpty = i < LocalFirstDay - 1 || full;
_daysNumber.setVisible(!isNotEmpty);
// Affichage du jour
if (!isNotEmpty) {


//Hier musste dann ne Abfrage machen, wo du den heutigen Tag mit dem
//angezeigten Datum vergleichst.

final int dayOfMonth = _calendar.get(Calendar.DAY_OF_MONTH);
_daysNumber.setText(String.valueOf(dayOfMonth));
_calendar.add(Calendar.DAY_OF_MONTH, 1);
full = 1 == _calendar.get(Calendar.DAY_OF_MONTH);
}
}
_calendar.setTime(tmp);
}

public static void main(final String[] args) throws ParseException {

SwingUtilities.invokeLater(new Runnable() {

public void run() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JCalendar());
frame.pack();
frame.setVisible(true);
}

});
}
}
 
Zuletzt bearbeitet:
Zurück
Top Bottom