Boa tarde pessol…
se alguem puder me dar um ajuda…
gotaria de saber como faço para criar um campo, que tenha data, mas essa data deve vir automaticamente do sistema.Ou seja, quando eu inicio a aplicação esse campo ja deve estar com a data.
valew
Boa tarde pessol…
se alguem puder me dar um ajuda…
gotaria de saber como faço para criar um campo, que tenha data, mas essa data deve vir automaticamente do sistema.Ou seja, quando eu inicio a aplicação esse campo ja deve estar com a data.
valew
Bom dia cassiano… vc pode usar a classe Date ou a Calendar (ou GregorianCalendar) pra trabalhar com datas. Se quiser pode usar essa classe q estende JComboBox que eu criei alterando um código q vi aqui no GUJ (só não me lembro onde). É só pôr no contrutor de um JComboBox:
//CalendarComboBox.java
import com.sun.java.swing.plaf.motif.MotifComboBoxUI;
import com.sun.java.swing.plaf.windows.WindowsComboBoxUI;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import javax.swing.plaf.ComboBoxUI;
import javax.swing.plaf.basic.BasicComboBoxEditor;
import javax.swing.plaf.basic.ComboPopup;
import javax.swing.plaf.metal.MetalComboBoxUI;
import javax.swing.text.MaskFormatter;
public class CalendarComboBox extends JComboBox {
boolean showActualDate;
private DatePopup datePopup;
private JFormattedTextField formattedTextField;
public CalendarComboBox(boolean showActualDate) {
super();
this.showActualDate = showActualDate;
try {
MaskFormatter formatter = new MaskFormatter("##/##/####");
formatter.setPlaceholderCharacter('_');
formattedTextField = new JFormattedTextField(formatter);
formattedTextField.setBorder(BorderFactory.createEmptyBorder());
if(showActualDate) formattedTextField.setValue(datePopup.getActualDate());
else formattedTextField.setValue("");
}
catch (ParseException e) {
e.printStackTrace();
};
setModel(new DefaultComboBoxModel(new String[] {"__/__/____"}));
setEditor(new BasicComboBoxEditor() {
public Component getEditorComponent() {
return formattedTextField;
}
});
}
private class MetalDateComboBoxUI extends MetalComboBoxUI {
protected ComboPopup createPopup() {
datePopup = new DatePopup(CalendarComboBox.this);
return datePopup;
}
}
private class WindowsDateComboBoxUI extends WindowsComboBoxUI {
protected ComboPopup createPopup() {
datePopup = new DatePopup(CalendarComboBox.this);
return datePopup;
}
}
private class MotifDateComboBoxUI extends MotifComboBoxUI {
protected ComboPopup createPopup() {
datePopup = new DatePopup(CalendarComboBox.this);
return datePopup;
}
}
private class DatePopup implements ComboPopup, MouseMotionListener, MouseListener, KeyListener,
PopupMenuListener {
private JComboBox comboBox;
private JPopupMenu popup;
private DatePanel datePanel;
protected boolean mouseInside = false;
protected boolean hideNext = false;
public DatePopup(final JComboBox comboBox) {
this.comboBox = comboBox;
initializePopup();
}
protected void togglePopup() {
if (isVisible() || hideNext) hide();
else show();
hideNext = false;
}
protected void initializePopup() {
datePanel = new DatePanel(this);
popup = new JPopupMenu();
popup.setPreferredSize(new java.awt.Dimension(192, 142));
popup.setBorder(BorderFactory.createLineBorder(Color.black));
popup.setLayout(new GridLayout(1, 1));
popup.addPopupMenuListener(this);
popup.add(datePanel);
}
public void show() {
if(!formattedTextField.getText().equals("__/__/____")) datePanel.prepareDate();
else datePanel.prepare(false, false, false, true);
popup.show(comboBox, comboBox.getWidth() - 193, comboBox.getHeight());
}
public void hide() {
popup.setVisible(false);
}
public JList getList() {
return new JList();
}
public MouseListener getMouseListener() {
return this;
}
public MouseMotionListener getMouseMotionListener() {
return this;
}
public KeyListener getKeyListener() {
return this;
}
public boolean isVisible() {
return popup.isVisible();
}
public void uninstallingUI() {
popup.removePopupMenuListener(this);
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {
if (!SwingUtilities.isLeftMouseButton(e)) {
return;
};
if (!comboBox.isEnabled()) return;
if (comboBox.isEditable()) comboBox.getEditor().getEditorComponent().requestFocus();
else comboBox.requestFocus();
togglePopup();
}
public void mouseEntered(MouseEvent e) {
mouseInside = true;
}
public void mouseExited(MouseEvent e) {
mouseInside = false;
}
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE || e.getKeyCode() == KeyEvent.VK_ENTER)
togglePopup();
}
public void popupMenuCanceled(PopupMenuEvent e) {}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
hideNext = mouseInside;
}
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {}
public String getActualDate() {
return datePanel.getActualDate();
}
}
private class DatePanel extends javax.swing.JPanel {
private DatePopup datePopup;
protected GregorianCalendar gc;
private JLabel[] day;
private String[] month;
private JLabel dayOfMonthLabel;
private JLabel selectedLabel;
private int dayOfMonth = 0;
private int selectedDay = 0;
/** Creates a new instance of DatePanel */
public DatePanel(DatePopup datePopup) {
initComponents();
this.datePopup = datePopup;
gc = new GregorianCalendar();
month = new String[] {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho",
"Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
day = new JLabel[42];
prepare(false, false, false, false);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
navegatePanel = new javax.swing.JPanel();
previousYear = new javax.swing.JButton();
previousMonth = new javax.swing.JButton();
dateLabel = new javax.swing.JLabel();
nextMonth = new javax.swing.JButton();
nextYear = new javax.swing.JButton();
weekAndDaysPanel = new javax.swing.JPanel();
weekPanel = new javax.swing.JPanel();
sundayLabel = new javax.swing.JLabel();
mondayLabel = new javax.swing.JLabel();
tuesdayLabel = new javax.swing.JLabel();
wednesdayLabel = new javax.swing.JLabel();
thursdayLabel = new javax.swing.JLabel();
fridayLabel = new javax.swing.JLabel();
saturdayLabel = new javax.swing.JLabel();
daysPanel = new javax.swing.JPanel();
setLayout(new java.awt.BorderLayout());
navegatePanel.setLayout(null);
navegatePanel.setPreferredSize(new java.awt.Dimension(20, 20));
previousYear.setFont(new java.awt.Font("Arial", 0, 9));
previousYear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/frame/img/ano_anterior.PNG")));
previousYear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
previousYearActionPerformed(evt);
}
});
navegatePanel.add(previousYear);
previousYear.setBounds(0, 0, 20, 20);
previousMonth.setFont(new java.awt.Font("Arial", 0, 9));
previousMonth.setIcon(new javax.swing.ImageIcon(getClass().getResource("/frame/img/mes_anterior.PNG")));
previousMonth.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
previousMonthActionPerformed(evt);
}
});
navegatePanel.add(previousMonth);
previousMonth.setBounds(20, 0, 20, 20);
dateLabel.setFont(new java.awt.Font("Tahoma", 1, 11));
dateLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
dateLabel.setText("Abril, 2006");
navegatePanel.add(dateLabel);
dateLabel.setBounds(45, 3, 100, 14);
nextMonth.setFont(new java.awt.Font("Arial", 0, 9));
nextMonth.setIcon(new javax.swing.ImageIcon(getClass().getResource("/frame/img/mes_seguinte.PNG")));
nextMonth.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
nextMonthActionPerformed(evt);
}
});
navegatePanel.add(nextMonth);
nextMonth.setBounds(150, 0, 20, 20);
nextYear.setFont(new java.awt.Font("Arial", 0, 9));
nextYear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/frame/img/ano_seguinte.PNG")));
nextYear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
nextYearActionPerformed(evt);
}
});
navegatePanel.add(nextYear);
nextYear.setBounds(170, 0, 20, 20);
add(navegatePanel, java.awt.BorderLayout.NORTH);
weekAndDaysPanel.setLayout(new java.awt.BorderLayout());
weekAndDaysPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
weekPanel.setLayout(new java.awt.GridLayout(1, 7));
weekPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
weekPanel.setPreferredSize(new java.awt.Dimension(20, 20));
sundayLabel.setForeground(new java.awt.Color(255, 0, 0));
sundayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
sundayLabel.setText("D");
weekPanel.add(sundayLabel);
mondayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
mondayLabel.setText("S");
weekPanel.add(mondayLabel);
tuesdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
tuesdayLabel.setText("T");
weekPanel.add(tuesdayLabel);
wednesdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
wednesdayLabel.setText("Q");
weekPanel.add(wednesdayLabel);
thursdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
thursdayLabel.setText("Q");
weekPanel.add(thursdayLabel);
fridayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
fridayLabel.setText("S");
weekPanel.add(fridayLabel);
saturdayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
saturdayLabel.setText("S");
weekPanel.add(saturdayLabel);
weekAndDaysPanel.add(weekPanel, java.awt.BorderLayout.NORTH);
daysPanel.setLayout(new java.awt.GridLayout(6, 7));
daysPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
daysPanel.setPreferredSize(new java.awt.Dimension(95, 95));
weekAndDaysPanel.add(daysPanel, java.awt.BorderLayout.CENTER);
add(weekAndDaysPanel, java.awt.BorderLayout.CENTER);
}// </editor-fold>
private void nextYearActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
prepare(true, false, true, false);
}
private void nextMonthActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
prepare(false, true, true, false);
}
private void previousMonthActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
prepare(false, true, false, false);
}
private void previousYearActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
prepare(true, false, false, false);
}
private void initArrayOfDays() {
for(int i=0; i<42; i++) {
day[i] = new JLabel();
day[i].setHorizontalAlignment(JLabel.CENTER);
day[i].setOpaque(true);
day[i].setBackground(Color.WHITE);
}
}
private void prepare(boolean rollYear, boolean rollMonth, boolean up, boolean instantiateGc) {
if(instantiateGc) gc = new GregorianCalendar();
dayOfMonth = gc.get(Calendar.DAY_OF_MONTH);
if(selectedDay == 0 || instantiateGc) selectedDay = dayOfMonth;
if(rollYear)
gc.roll(Calendar.YEAR, up);
if(rollMonth) {
if((up && gc.get(Calendar.MONTH) == Calendar.DECEMBER) ||
(!up && gc.get(Calendar.MONTH) == Calendar.JANUARY))
gc.roll(Calendar.YEAR, up);
gc.roll(Calendar.MONTH, up);
};
gc.set(Calendar.DAY_OF_MONTH, 1);
int firstDayOfMonth = gc.get(Calendar.DAY_OF_WEEK);
int maximumDayOfMonth = gc.getActualMaximum(Calendar.DAY_OF_MONTH);
gc.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String monthText = month[gc.get(Calendar.MONTH)];
dateLabel.setText(String.valueOf(monthText + ", " + gc.get(Calendar.YEAR)));
fillDaysPanel(firstDayOfMonth, maximumDayOfMonth);
}
private void fillDaysPanel(int firstDayOfMonth, int maximumDayOfMonth) {
int index = 1;
daysPanel.removeAll();
initArrayOfDays();
for(int i=0; i<42; i++) {
if(i+1 >= firstDayOfMonth && index <= maximumDayOfMonth) {
day[i].setText(String.valueOf(index));
day[i].setBorder(BorderFactory.createEmptyBorder());
if(index == selectedDay || index == dayOfMonth) {
day[i].setBorder(BorderFactory.createLoweredBevelBorder());
if(index == selectedDay) {
day[i].setBackground(Color.BLUE);
day[i].setForeground(Color.WHITE);
selectedLabel = day[i];
}
else {
if(i%7 != 0)
day[i].setForeground(UIManager.getDefaults().getColor("label.foreground"));
else
day[i].setForeground(Color.RED);
if(index == dayOfMonth) dayOfMonthLabel = day[i];
}
}
else {
if(day[i].getText().equals(String.valueOf(selectedDay))) {
day[i].setBackground(Color.GRAY);
day[i].setForeground(Color.WHITE);
selectedLabel = day[i];
};
if(day[i].getText().equals(String.valueOf(dayOfMonth))) dayOfMonthLabel = day[i];
if(day[i] != selectedLabel) {
if(i%7 != 0)
day[i].setForeground(UIManager.getDefaults().getColor("label.foreground"));
else
day[i].setForeground(Color.RED);
}
};
final int finalI = i;
index++;
day[i].addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(!selectedLabel.getText().equals(String.valueOf(dayOfMonth)))
selectedLabel.setBorder(BorderFactory.createEmptyBorder());
selectedLabel.setBackground(Color.WHITE);
gc.set(Calendar.DAY_OF_MONTH, Integer.parseInt(selectedLabel.getText()));
if(gc.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)
selectedLabel.setForeground(UIManager.getDefaults().getColor("label.foreground"));
else
selectedLabel.setForeground(Color.RED);
gc.set(Calendar.DAY_OF_MONTH, dayOfMonth);
day[finalI].setBorder(BorderFactory.createLoweredBevelBorder());
day[finalI].setBackground(Color.GRAY);
day[finalI].setForeground(Color.WHITE);
selectedLabel = day[finalI];
selectedDay = Integer.parseInt(selectedLabel.getText());
datePopup.hide();
DecimalFormat df = new DecimalFormat("00");
String dayText = df.format(selectedDay);
String monthText = df.format(gc.get(Calendar.MONTH) + 1);
String yearText = String.valueOf(gc.get(Calendar.YEAR));
formattedTextField.setValue(dayText + "/" + monthText + "/" + yearText);
}
});
};
daysPanel.add(day[i]);
}
}
private void isValidDate() throws NumberFormatException {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
try {
sdf.parse(formattedTextField.getText());
}
catch(ParseException pe) {
throw new NumberFormatException();
}
}
public void prepareDate() {
try {
isValidDate();
int d = Integer.parseInt(formattedTextField.getText().substring(0, 2));
int m = Integer.parseInt(formattedTextField.getText().substring(3, 5)) - 1;
int y = Integer.parseInt(formattedTextField.getText().substring(6));
dayOfMonth = gc.get(Calendar.DAY_OF_MONTH);
selectedDay = d;
gc.set(Calendar.MONTH, m);
gc.set(Calendar.YEAR, y);
gc.set(Calendar.DAY_OF_MONTH, 1);
int firstDayOfMonth = gc.get(Calendar.DAY_OF_WEEK);
int maximumDayOfMonth = gc.getActualMaximum(Calendar.DAY_OF_MONTH);
gc.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String monthText = month[gc.get(Calendar.MONTH)];
dateLabel.setText(String.valueOf(monthText + ", " + gc.get(Calendar.YEAR)));
fillDaysPanel(firstDayOfMonth, maximumDayOfMonth);
}
catch(NumberFormatException e) {
formattedTextField.setValue("");
prepare(false, false, false, true);
JOptionPane.showMessageDialog(null,
"Favor indicar uma data válida.",
"Atenção:",
JOptionPane.INFORMATION_MESSAGE);
}
}
public String getActualDate() {
DecimalFormat df = new DecimalFormat("00");
gc = new GregorianCalendar();
String d = df.format(gc.get(Calendar.DAY_OF_MONTH));
String m = df.format(gc.get(Calendar.MONTH) + 1);
String y = String.valueOf(gc.get(Calendar.YEAR));
return String.valueOf(d + "/" + m + "/" + y);
}
// Variables declaration - do not modify
private javax.swing.JLabel dateLabel;
private javax.swing.JPanel daysPanel;
private javax.swing.JLabel fridayLabel;
private javax.swing.JLabel mondayLabel;
private javax.swing.JPanel navegatePanel;
private javax.swing.JButton nextMonth;
private javax.swing.JButton nextYear;
private javax.swing.JButton previousMonth;
private javax.swing.JButton previousYear;
private javax.swing.JLabel saturdayLabel;
private javax.swing.JLabel sundayLabel;
private javax.swing.JLabel thursdayLabel;
private javax.swing.JLabel tuesdayLabel;
private javax.swing.JLabel wednesdayLabel;
private javax.swing.JPanel weekAndDaysPanel;
private javax.swing.JPanel weekPanel;
// End of variables declaration
}
public void updateUI() {
ComboBoxUI comboBoxUI = (ComboBoxUI) UIManager.getUI(this);
if(comboBoxUI instanceof MetalComboBoxUI) comboBoxUI = new MetalDateComboBoxUI();
else if(comboBoxUI instanceof MotifComboBoxUI) comboBoxUI = new MotifDateComboBoxUI();
else if(comboBoxUI instanceof WindowsComboBoxUI) comboBoxUI = new WindowsDateComboBoxUI();
setUI(comboBoxUI);
}
public Object getSelectedItem() {
return formattedTextField.getValue();
}
public void setSelectedItem(Object anObject) {
System.out.println(anObject);
if(anObject != null) {
if(anObject instanceof String) formattedTextField.setValue(anObject);
else throw new IllegalArgumentException("String type required (format: \"dd/MM/yyyy\")");
}
else {
if(showActualDate) formattedTextField.setValue(datePopup.getActualDate());
else formattedTextField.setValue("");
}
}
public boolean selectWithKeyChar(char keyChar) {
return false;
}
}
Veja o método getActualDate():
public String getActualDate() {
DecimalFormat df = new DecimalFormat("00");
gc = new GregorianCalendar();
String d = df.format(gc.get(Calendar.DAY_OF_MONTH));
String m = df.format(gc.get(Calendar.MONTH) + 1);
String y = String.valueOf(gc.get(Calendar.YEAR));
return String.valueOf(d + "/" + m + "/" + y);
}
QQ coisa “tamos aí”…
[quote=cassianoMassoni]Boa tarde pessol…
se alguem puder me dar um ajuda…
gotaria de saber como faço para criar um campo, que tenha data, mas essa data deve vir automaticamente do sistema.Ou seja, quando eu inicio a aplicação esse campo ja deve estar com a data.
valew[/quote]
Se vc quiser usar só a data e a hora pode fazer deste jeito:
import java.text.DateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JLabel;
public class DataDoSistema extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JTextField jTextFieldData = null;
private JLabel jLabel = null;
/**
* This method initializes
*
*/
public DataDoSistema() {
super();
initialize();
}
/**
* This method initializes this
*
*/
private void initialize() {
this.setSize(new java.awt.Dimension(390,172));
this.setTitle("Data Automática");
this.setContentPane(getJPanel());
//this.pack();
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(103,28,194,16));
jLabel.setText("Data Automática");
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.add(getJTextFieldData(), null);
jPanel.add(jLabel, null);
}
return jPanel;
}
/**
* This method initializes jTextFieldData
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldData() {
if (jTextFieldData == null) {
jTextFieldData = new JTextField();
jTextFieldData.setBounds(new java.awt.Rectangle(102,50,198,20));
}
return jTextFieldData;
}
/**
* @param args
*/
public static void main(String[] args) {
DataDoSistema d = new DataDoSistema();
Date myDate = new Date(System.currentTimeMillis());
DateFormat df = DateFormat.getInstance();
d.jTextFieldData.setText(df.format(myDate) );
d.setVisible(true);
}
} // @jve:decl-index=0:visual-constraint="10,10"
Um abraço !