Problemas al escribir calendarios usando JS
Importar Java . awt *;
Importar Java . >Importar javax.swing.*;
Importar javax.swing.event.*;
Importar javax.swing.table.*;
Clase pública MiCalendario JApplet extendido {
cadena final estática pública larga serialVersionUID = 4398452463891616204 l;
cadena final estática pública SEMANA _ SOL = "DOM";
cadena final estática pública SEMANA _ MON = " MON
Cadena final estática pública SEMANA _ MAR = " MAR ";
Cadena final estática pública SEMANA _ MIÉ = " MIÉ ";
cadena final estática pública SEMANA _ JUEVES = " JUEVES ";
cadena final estática pública SEMANA _ VIE = " VIE ";
cadena final estática pública SEMANA _ SAT = " SAT ";
Color final estático público fondo = Color.blanco
Color final estático público primer plano = Color.negro
Color final estático público fondo encabezado = Color azul;
Color final estático público encabezado primer plano = Color blanco;
Color final estático público seleccionadoFondo = Color.azul
Color final estático público seleccionadoPrimer plano = Color blanco. ;
JPanel privado cPane
JLabel privado añosLabel
JPanel privado añosSpinner
JLabel privado mesesLabel
JComboBox privado cuadro combinado de meses;
JTable privado díasTable
AbstractoTableModel privado díasModel
Calendario Calendario privado;
MiCalendar público() {
cPane =(JPanel)getContentPane();
}
public void init() {
cpane establece diseño (nuevo BorderLayout()). ;
calendario = calendario . getinstance();
//calendario =.
calendar.getinstance();
etiqueta de años = new JLabel("Año:");
años spinner = new JSpinner();
añosSpinner.setEditor (nuevo JSpinner.NumberEditor(añosSpinner, "0000");
años spinner.setvalue(nuevo Integer(Calendar.get(Calendar.año)));
años spinner.addchangelistener (nuevo oyente de cambios(){
estado de anulación pública cambiado(evento de cambio evento de cambio){
int día = calendar.get(calendar.monthday);
calendar.set(calendar.monthday,1);
calendar.set(calendar.YEAR, ((Integer) añosSpinner.getValue()).int value());
int maxDay = Calendar . getactualmaximum(Calendar. mes día);
calendar.set(calendario. día del mes, día gtmaxDay? maxDay: día); );
}
});
JPanel añoMesPanel = nuevo JPanel();
cPane.add( añoMesPanel, BorderLayout. norte);
añomespanel.set diseño(nuevo BorderLayout());
añoMonthPanel.add(nuevo JPanel(), BorderLayout);
Panel año JPanel = nuevo JPanel();
añoMonthPanel.add(añoPanel, BorderLayout.west);
año panel.set diseño(nuevo BorderLayout()); añoPanel.add(añosLabel,BorderLayout. Oeste);
añoPanel.add(añosSpinner, BorderLayout.center);
etiqueta de meses = new JLabel("Mes:");
cuadro combinado de meses = new JComboBox();
for(int I = 1; i lt= 12; i) {
mesesComboBox.addItem(nuevo entero (I));
}
cuadro combinado de meses . setelectedindex(Calendar . get(Calendar.
meses));
cuadro combinado de meses. addactionlistener(new action listener(){
acción de anulación pública realizada(ActionEvent ActionEvent){
int día = calendario. get(calendar.monthday);
calendar.set(calendar.monthday,1);
calendar.set(calendar.MONTH,meses combobox.getselectedindex()); p>
int maxDay = Calendar . getactualmaximum(Calendar.Month day);
calendar.set(Calendario. Un determinado día del mes, día gtmaxDay? maxDay: día
);p>
actualizar vista();
}
});
Panel del mes de JPanel = nuevo JPanel();
añoMonthPanel.add(mesPanel, BorderLayout.East);
mes panel.set diseño(nuevo BorderLayout());
mesPanel.add(mesesLabel, BorderLayout.West );
mesPanel.add(mesesComboBox, BorderLayout. Center);
días modelo = nuevo AbstractTableModel(){
privado estático final largo serialVersionUID =-5996965100536784508 l;
público int getRowCount() {
retorno 7;
}
público int getColumnCount() {
return 7;
}
Objeto público getValueAt(int fila, int columna) {
if (fila == 0) {
Regresar obtener encabezado(columna);
}
Línea -;
Calendario Calendario = (Calendario)mi Calendario. ();
calendario.set(calendario. Día del mes, 1);
int número de días = Calendario . getactualmaximum(Calendario. Día del mes);
int moreDayCount = Calendario .
día de la semana)-1;
int index = fila * 7 columnas;
int day index = index-moreDayCount 1;
if(index lt ; moreDayCount | | dayIndex gt número de días) {
Devuelve nulo
} En caso contrario {
Devuelve un nuevo número entero (índice de días);
}
}
};
día estable = nueva tabla de calendario (modelo de días, calendario
día estable); . setcellselectionenabled(true);
día estable. setselectionmode(ListSelectionModel. Selección de radio);
día estable. {
Componente público getTableCellRendererComponent(tabla JTable, valor de objeto, booleano isSelected,
booleano hasFocus, int fila, int columna) {
Texto de cadena = (valor == nulo )? " ": valor . tostring();
celda JLabel = nueva celda JLabel
. p>if (fila == 0) {
celda establecer primer plano(encabezadoForeground);
celda establecer fondo(fondo del encabezado); { p>
Si (isSelected) {
celda establecer primer plano(selectedForeground);
celda establecer fondo(selectedBackground); } else {
cell.setForeground(primer plano);
cell.setBackground(fondo
}
}
Devolver celda;
}
});
actualizar vista();
cPane.add(daysTable, Diseño de borde.
center);
}
Cadena estática pública getHeader(int index) {
Switch(index){
Caso 0:
Volver a semana_día;
Caso 1:
Volver a SEMANA_MON
Caso 2:
Volver semana_ MAR;
Caso tres:
Regreso SEMANA_MIÉ
Caso 4:
Regreso semana_ JUE;
Regreso WEEK_WED
Caso 4:
Regreso semana_ JUE;
p>
Caso 5:
Regreso WEEK_VIE
Caso 6:
Devolver WEEK_SAT
Valor predeterminado:
Devolver nulo
}
}
Actualización nula pública() {
modelo de días. firetabledatachanged(
día estable. setrowselectioninterval(Calendario. get(Calendario. Semana del mes) ,
calendar.get(Calendario. Semana del mes);
día estable . setcolumnselectioninterval(Calendario . get(Calendario. día de la semana)-1,
calendar.get(calendar. día de la semana)-1);
}
La clase estática pública CalendarTable extiende JTable {
privada estática final larga serialVersionUID = 2808554667609229840 l;
Calendario calendario privado;
Tabla de calendario público (modelo TableModel, calendario calendario){
Super(modelo);
this.calendar = calendario;
}
selección de cambio de anulación pública (fila int, columna int, alternancia booleana, extensión booleana) {
super .changeSelection(fila, columna, cambiar, extender);
if (fila == 0) { p>
Retorno;
}
Objeto obj = getValueAt(fila, columna);
if (obj! = nulo) {
calendar.set(calendar.DAY_OF_MONTH, ((Integer)obj).int value());
}
} p>
}
@SuppressWarnings("deprecation ")
Public static void main(String[] args) {
Marco JFrame = nuevo JFrame ("Aplicación de calendario");
frame .
EXIT _ ON _ CLOSE);
MiCalendario MiCalendar = nuevo MiCalendario();
mi calendario
frame.getContentPane(). Agregar (mi calendario);
frame.setSize(240, 172
frame .
}
; }