Kaskus

Tech

okkypeAvatar border
TS
okkype
bantuin ane gan, bikin custom combobox di java
Gan bisa bantuin ane, java nih, ane STUCK nih, coba ganti tampilan popupnya combobox jadi datechooser, tapi munculnya cuma di klik pertama doank, klik berikutnya kembali ke popup aslinya, akhirnya q jadiin gni aja
Code:

package pbo;

import datechooser.beans.DateChooserPanel;
import datechooser.events.CommitEvent;
import datechooser.events.CommitListener;
import datechooser.events.SelectionChangedEvent;
import datechooser.events.SelectionChangedListener;
import datechooser.model.multiple.PeriodSet;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JPopupMenu;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;

/**
*
* @author okky
*/
public class oDateCombo extends JComboBox {

private DateChooserPanel chooser;
private JPopupMenu menu;
private PeriodSet selection;
private DateFormat dateFormat = null;

public oDateCombo() {
init();
}

//<editor-fold defaultstate="collapsed" desc="Sistem">
private void init() {
chooser = new DateChooserPanel();
chooser.setCurrentNavigateIndex(1);
chooser.addSelectionChangedListener(new SelectionChangedListener() {
@Override
public void onSelectionChange(SelectionChangedEvent evt) {
dateToField();
}
});
chooser.addCommitListener(new CommitListener() {
@Override
public void onCommit(CommitEvent evt) {
menu.setVisible(false);
dateToField();
}
});

menu = new JPopupMenu();
menu.add(chooser);
menu.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuCanceled(PopupMenuEvent e) {
restoreState();
dateToField();
chooser.commit();
}

@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
}

@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
saveState();
}
});

addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
}

@Override
public void focusLost(FocusEvent e) {
fieldToDate();
}
});

addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
showDropDown();
}
});

// setEnabled(false);

dateToField();
}

private void dateToField() {
// removeAllItems();
try {
boolean tada = true;
String csr = chooser.getSelectedPeriodSet().toString(getDateFormat()).trim();
for (int a = 0; a < getItemCount(); a++) {
try {
if (getItemAt(a).toString().equalsIgnoreCase(csr)) {
tada = false;
}
} catch (Exception e) {
}
}
if (tada && !csr.equalsIgnoreCase("")) {
addItem(csr);
setSelectedItem(csr);
}
} catch (Exception e) {
}
}

private void restoreState() {
chooser.setSelection(selection);
}

private void saveState() {
selection = (PeriodSet) chooser.getSelectedPeriodSet().clone();
}

public DateFormat getDateFormat() {
if (dateFormat != null) {
return dateFormat;
}
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
return fmt;
}

private boolean fieldToDate() {
try {
Date dat;
dat = getDateFormat().parse(this.getItemAt(0).toString());
Calendar newDat = new GregorianCalendar();
newDat.setTime(dat);
setSelectedDate(newDat);
} catch (ParseException ex) {
dateToField();
return false;
}
return true;
}

public void setSelectedDate(Calendar aDate) {
chooser.setSelectedDate(aDate);
dateToField();
}

private void showDropDown() {
menu.show(getParent(), getX(), getY() + getHeight());
}
//</editor-fold>
}
0
753
0
GuestAvatar border
Komentar yang asik ya
GuestAvatar border
Komentar yang asik ya
Komunitas Pilihan