JSpinner mit alten Werten
Ich verwende einige JSpinners in meinem Projekt, die die Stunde und die Minuten anzeigen. Wenn der JSpinner inkrementiert oder dekrementiert wird, muss ich den Wert in der Datenbank speichern. Aber das Problem ist, dass die JSpinners mir alte Werte geben. zB- Wenn die angezeigte Zeit ist09:30
und ich erhöhe die Zeit auf10:30
Ich erhalte 09:30 als den zurückgegebenen Wert. Ich benutze folgenden Code
UPDATED SSCCE
package spinnerupdation;
import java.awt.Container;
import java.awt.FlowLayout;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.DateFormatter;
import javax.swing.text.DefaultFormatterFactory;
/**
*
* @author Rohan Kandwal
*/
public class SpinnerUpdation extends JFrame{
public JSpinner spinner;
SpinnerUpdation(){
Container pane=this.getContentPane();
JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
SpinnerDateModel model=new SpinnerDateModel();
model.setCalendarField(Calendar.HOUR);
spinner=new JSpinner();
spinner.setModel(model);
spinner.setEditor(new JSpinner.DateEditor(spinner,"hh:mm"));
panel.add(spinner);
pane.add(panel);
spinner.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JFormattedTextField tf = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
DefaultFormatterFactory factory = (DefaultFormatterFactory) tf.getFormatterFactory();
DateFormatter formatter = (DateFormatter) factory.getDefaultFormatter();
// Change the date format to only show the hours
formatter.setFormat(new SimpleDateFormat("hh:mm"));
//formatter.setCommitsOnValidEdit(true);
System.out.println(spinner.getValue());
//System.out.println(tf.getText());
}
});
}
public static void main(String[] args) {
SpinnerUpdation ss=new SpinnerUpdation();
ss.setDefaultCloseOperation(ss.EXIT_ON_CLOSE);
ss.setSize(574, 445);
//ss.pack();
ss.setLocationRelativeTo(null);
ss.setResizable(false);
ss.setVisible(true);
}
}
wenn ich benutzetf.getText()
Ich erhalte den alten Wert zweimal, aber wenn ich benutzespinner.getValue
Ich erhalte den neuen Wert, aber er ist im Langformat
Thu Jan 01 10:18:00 IST 1970
Thu Jan 01 11:18:00 IST 1970
Wie soll ich spinner formatieren um nur zu geben11:18
?