COMO DECLARAR UMA DATA EM UM PROGRAMA?
O USUARIO TEM QUE ENTRAR COM A DATA DE COMPRA. COMO DECLARAR ESTA DATA NO PROGRAMA?
COMO DECLARAR UMA DATA EM UM PROGRAMA?
O USUARIO TEM QUE ENTRAR COM A DATA DE COMPRA. COMO DECLARAR ESTA DATA NO PROGRAMA?
Se você é iniciante eu recomento que ele passe tres paramentos
dia, mes e ano
depois vc pega essas tres variaveis e instancia um GregorianCalendar ou qual quer outro calendario
e faça algo do tipo
int dia;
int mes;
int ano;
GregorianCalendar data = new GregorianCalendar(ano, mes, dia);
PS.: Os parametros devem ser naquela ordem!
É claro que depende do uso, mas normalmente você vai usar uma variável do tipo java.util.Date, para guardar a data, e caso necessário usar um SimpleDateFormat para formatar as saídas como quiser.
No swing sugiro que utilize o framework JCalendar para criar o componente de entrada da informação:
http://www.toedter.com/en/jcalendar/index.html
Pro cara preencher a data use um JFormattedTextField assim:
private javax.swing.JFormattedTextField txtDataNascimento;
No construtor do formulario:
txtDataNascimento = new JFormattedTextField();
FabricaMascaras.aplicaMascara(txtDataNascimento, FabricaMascaras.getMascaraData());
No focusLost do txtDataNascimento:
private void txtDataNascimentoFocusLost(java.awt.event.FocusEvent evt) {
if (txtDataNascimento.getText().length() > 0 && !txtDataNascimento.getText().equals(FabricaMascaras.MASCARA_DATA.replaceAll("#", new Character(FabricaMascaras.PLACEHOLDER).toString()))) {
String dados[] = txtDataNascimento.getText().split("/");
boolean dataOK = true;
for (String string : dados) {
if (string.contains("_")) {
dataOK = false;
}
}
if (dataOK) {
Calendar cl = Calendar.getInstance();
int ano = new Integer(dados[2]).intValue();
int mes = new Integer(dados[1]).intValue();
int dia = new Integer(dados[0]).intValue();
if (ano <= 0) {
dataOK = false;
}
if (mes < 1 || mes > 12) {
dataOK = false;
}
if (dia < 1 || dia > 31) {
dataOK = false;
}
if (dataOK) {
cl.set(Calendar.YEAR, ano);
cl.set(Calendar.MONTH, mes - 1);
cl.set(Calendar.DAY_OF_MONTH, 1);
if (dia > cl.getActualMaximum(Calendar.DAY_OF_MONTH)) {
dataOK = false;
}
}
}
if (!dataOK) {
JOptionPane.showMessageDialog(this, "Data invalida: " + txtDataNascimento.getText(), "Data", JOptionPane.INFORMATION_MESSAGE);
txtDataNascimento.setText("");
txtDataNascimento.requestFocus();
}
}
}
E Na hora de usar a data que esta no txtDataNascimento:
Date dataNascimento = new SimpleDateFormat("dd/MM/yyyy").parse(txtDataNascimento.getText());
Classe FabricaMascaras:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.omegacodigos.ultra.swing;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.MaskFormatter;
import javax.swing.text.PlainDocument;
/**
*
* @author kemper
*/
public abstract class FabricaMascaras {
public static String MASCARA_CEP = "##.###-###";
public static String MASCARA_MAC = "HH:HH:HH:HH:HH:HH";
public static String MASCARA_DATA = "##/##/####";
public static String MASCARA_HORASMINUTOS = "##:##";
public static String MASCARA_TELEFONE = "(##)####-####";
public static String MASCARA_CNPJ = "##.###.###/####-##";
public static String MASCARA_CPF = "###.###.###-##";
public static char PLACEHOLDER = '_';
public static DefaultFormatterFactory getMascaraCEP() {
try {
MaskFormatter defaultMask = new MaskFormatter(MASCARA_CEP);
defaultMask.setValidCharacters("0123456789");
defaultMask.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(defaultMask, defaultMask, defaultMask, defaultMask);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static DefaultFormatterFactory getMascaraData() {
try {
MaskFormatter mf = new MaskFormatter(MASCARA_DATA);
mf.setValidCharacters("0123456789");
mf.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static DefaultFormatterFactory getMascaraMAC() {
try {
MaskFormatter mf = new MaskFormatter(MASCARA_MAC);
mf.setValidCharacters("0123456789ABCDEF");
mf.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static DefaultFormatterFactory getMascaraHORAMINUTOS() {
try {
MaskFormatter mf = new MaskFormatter(MASCARA_HORASMINUTOS);
mf.setValidCharacters("0123456789");
mf.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static DefaultFormatterFactory getMascaraTelefone() {
try {
MaskFormatter mf = new MaskFormatter(MASCARA_TELEFONE);
mf.setValidCharacters("0123456789");
mf.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static DefaultFormatterFactory getMascaraCNPJ() {
try {
MaskFormatter mf = new MaskFormatter(MASCARA_CNPJ);
mf.setValidCharacters("0123456789");
mf.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static DefaultFormatterFactory getMascaraCPF() {
try {
MaskFormatter mf = new MaskFormatter(MASCARA_CPF);
mf.setValidCharacters("0123456789");
mf.setPlaceholderCharacter(PLACEHOLDER);
DefaultFormatterFactory mascara = new DefaultFormatterFactory(mf, mf);
return mascara;
} catch (ParseException ex) {
return null;
}
}
public static void aplicaMascara(JFormattedTextField controle, DefaultFormatterFactory mascara) {
controle.setFormatterFactory(mascara);
}
public static void SetJTextFieldParaPreencherValorMonetario(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
toInsert.append(str.charAt(i));
} else {
if (str.charAt(i) == ',' && getText(0, getLength()).contains(",") == false) {
toInsert.append(str.charAt(i));
}
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
public static void SetJTextFieldParaPreencherNome(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isLetter(str.charAt(i))) {
toInsert.append(str.charAt(i));
} else if (str.charAt(i) == ' ' || str.charAt(i) == '-') {
toInsert.append(str.charAt(i));
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
public static void SetJTextFieldParaPreencherEmail(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isLetterOrDigit(str.charAt(i))) {
toInsert.append(str.charAt(i));
} else if (str.charAt(i) == '-' || str.charAt(i) == '+' || str.charAt(i) == '.' || str.charAt(i) == '_') {
toInsert.append(str.charAt(i));
} else if (str.charAt(i) == '@') {
if (getText(0, getLength()).contains("@") == false) {
toInsert.append(str.charAt(i));
}
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
public static void SetJTextFieldParaPreencherSite(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isLetterOrDigit(str.charAt(i))) {
toInsert.append(str.charAt(i));
} else if (str.charAt(i) == '-' || str.charAt(i) == '.' || str.charAt(i) == ':' || str.charAt(i) == '/') {
toInsert.append(str.charAt(i));
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
public static void SetJTextFieldParaPreencherApenasNumeros(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
toInsert.append(str.charAt(i));
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
public static void SetJTextFieldParaPreencherCPFCNPJ(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
toInsert.append(str.charAt(i));
} else {
if (str.charAt(i) == '.' || str.charAt(i) == '/' || str.charAt(i) == '-') {
toInsert.append(str.charAt(i));
}
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
public static void SetJTextFieldParaPreencherVelocidadeMikrotik(JTextField campo) {
campo.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
//normalmente apenas uma letra é inserida por vez,
//mas fazendo assim também previne caaso o usuário
//cole algum texto
StringBuffer toInsert = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
boolean contemKMG = false;
if ((getText(0, getLength()).contains("k")) ||
(getText(0, getLength()).contains("m")) ||
(getText(0, getLength()).contains("g"))) {
contemKMG = true;
}
if (contemKMG == false || (contemKMG == true && offs < getLength())) {
toInsert.append(str.charAt(i));
}
} else {
if (str.charAt(i) == 'k' || str.charAt(i) == 'm' || str.charAt(i) == 'g') {
if ( //casos em que esta inserindo uma letra no final
(str.length() == 1 && offs == getLength() && getLength() > 0) ||
(str.length() > 1 && i == (str.length() - 1))) {
if (!(getText(0, getLength()).contains("k")) &&
!(getText(0, getLength()).contains("m")) &&
!(getText(0, getLength()).contains("g"))) {
toInsert.append(str.charAt(i));
}
}
}
}
}
super.insertString(offs, toInsert.toString(), a);
}
});
}
}
Como pode ver ela tem varias outras funcoes uteis, bom proveito!