Bom dia,
Tenho um calendario e preciso fazer com que mostrasse todos os meses na tela.
Tipo de Janeiro a dezembro, acredito que seria só fazer um for, mas nao desenha na tela.
alguem poderia me ajudar?
segue minha classe:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
@SuppressWarnings("serial")
public class Calendario extends JFrame implements ActionListener {
private static final ArrayList<String> meses;
static {
meses = new ArrayList<String>(12);
meses.add("Janeiro");
meses.add("Fevereiro");
meses.add("Marco");
meses.add("Abril");
meses.add("Maio");
meses.add("Junho");
meses.add("Julho");
meses.add("Agosto");
meses.add("Setembro");
meses.add("Outubro");
meses.add("Novembro");
meses.add("Dezembro");
};
private GregorianCalendar calendario;
private JLabel labelmes;
private JLabel labelano;
private JPanel Paneldia;
public Calendario ( GregorianCalendar d) {
Border loweredbevel;
calendario = d;
setLayout(new FlowLayout());
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JButton[] buttons = new JButton[32];
JButton sair = new JButton("Sair");
panel2.add(buttons[0] = new JButton("\u22B2"));
panel2.add(labelmes = new JLabel(String.valueOf(meses.get(calendario.get(GregorianCalendar.MONTH))), JLabel.CENTER));
panel2.add(buttons[1] = new JButton("\u22B3"));
panel1.add(buttons[2] = new JButton("\u22B4"));
panel1.add(labelano = new JLabel(String.valueOf(calendario.get(GregorianCalendar.YEAR)),JLabel.CENTER), BorderLayout.CENTER);
panel1.add(buttons[3] = new JButton("\u22B5"));
TitledBorder titulo21 = null;
loweredbevel = BorderFactory.createRaisedBevelBorder();
titulo21 = BorderFactory.createTitledBorder(loweredbevel,"Mes");
panel2.setBorder(titulo21);
TitledBorder titulo22 = null;
loweredbevel = BorderFactory.createRaisedBevelBorder();
titulo22 = BorderFactory.createTitledBorder(loweredbevel,"Ano");
panel1.setBorder(titulo22);
for (int i=0; i<4; i++) {
buttons[i].addActionListener(this);
}
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(5, 10, 0, 10));
panel.add(panel2);
panel.add(panel1);
panel.add(sair);
Paneldia = new JPanel(new GridLayout(7, 7));
updateDayGrid();
add(panel, BorderLayout.NORTH);
add(Paneldia, BorderLayout.CENTER);
pack();
setVisible(true);
sair.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
}
public GregorianCalendar getCal () {
return calendario;
}
public void actionPerformed (ActionEvent evt) {
String label = ((JButton) evt.getSource()).getText();
if (label.equals("\u22B2")) {
int m = meses.indexOf(labelmes.getText());
m = prevMonth(m);
labelmes.setText((String) meses.get(m));
updateDayGrid();
}
else if (label.equals("\u22B3")) {
int m = meses.indexOf(labelmes.getText());
m = nextMonth(m);
labelmes.setText((String) meses.get(m));
updateDayGrid();
}
else if (label.equals("\u22B4")) {
int y = 0;
try {
y = Integer.parseInt(labelano.getText());
}
catch (NumberFormatException e) {
System.err.println(e.toString());
}
labelano.setText(String.valueOf(--y));
updateDayGrid();
}
else if (label.equals("\u22B5")) {
int y = 0;
try {
y = Integer.parseInt(labelano.getText());
}
catch(Exception e){}
labelano.setText(String.valueOf(++y));
updateDayGrid();
}
else {
int m = meses.indexOf(labelmes.getText());
int y = 0;
int d = 0;
try {
y = Integer.parseInt(labelano.getText());
d = Integer.parseInt(label);
}
catch(Exception e){}
calendario = new GregorianCalendar(y, m, d);
calendario.setLenient(false);
}
}
private void updateDayGrid () {
Paneldia.removeAll();
int m = meses.indexOf(labelmes.getText());
int y = 0;
try {
y = Integer.parseInt(labelano.getText());
}
catch(Exception e){}
GregorianCalendar temp = new GregorianCalendar(y, m, 1);
temp.setLenient(false);
int offset = 0;
switch(temp.get(GregorianCalendar.DAY_OF_WEEK)) {
case GregorianCalendar.SUNDAY : offset = 0; break;
case GregorianCalendar.MONDAY : offset = 1; break;
case GregorianCalendar.TUESDAY : offset = 2; break;
case GregorianCalendar.WEDNESDAY : offset = 3; break;
case GregorianCalendar.THURSDAY : offset = 4; break;
case GregorianCalendar.FRIDAY : offset = 5; break;
case GregorianCalendar.SATURDAY : offset = 6; break;
}
String daynames[]={"Dom","Seg","Ter","Qua","Qui","Sex","Sab"};
JLabel l[]=new JLabel[7];
for(int i=0;i<7;i++){
l[i]=new JLabel(daynames[i], JLabel.CENTER);
Paneldia.add(l[i]);
l[0].setForeground(Color.red);
l[i].setForeground(Color.black);
}
for (int i=1; i<=offset; i++) {
Paneldia.add(new JLabel(""));
}
JButton day;
for (int i=1; i<=getLastDay(); i++) {
Paneldia.add(day = new JButton(String.valueOf(i)));
day.addActionListener(this);
day.setForeground(Color.blue);
Paneldia.setBackground(Color.white);
if (i == calendario.get(Calendar.DATE) &&
m == calendario.get(Calendar.MONTH) &&
y == calendario.get(Calendar.YEAR)) {
day.setForeground(Color.red);
}
for (int i1=0; i1<JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT; i1++) {
day.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CadastroEmpresa l = new CadastroEmpresa();
l.setVisible(true);
l.setSize(new Dimension(800,500));
}
});
}
}
for (int i=(offset+getLastDay()+1); i<=42; i++) {
Paneldia.add(new JLabel(""));
}
repaint();
}
private int nextMonth (int month) {
if (month == 11) {
return(0);
}
return(++month);
}
private int prevMonth (int month) {
if (month == 0) {
return(11);
}
return(--month);
}
private int getLastDay () {
int m = (meses.indexOf(labelmes.getText()) + 1);
int y = 0;
try {
y = Integer.parseInt(labelano.getText());
}
catch(Exception e){}
if ((m==4) || (m==6) || (m==9) || (m==11)) {
return(30);
}
else if (m==2) {
if (calendario.isLeapYear(y)) {
return(29);
}
return(28);
}
return(31);
}
@SuppressWarnings("unused")
public static void main(String[]args){
GregorianCalendar cal=new GregorianCalendar();
Calendario e =new Calendario(cal);
}
}
Desde já agradeço a atenção.