시간과 분을 표시하는 프로젝트에서 몇 명의 JSpinners를 사용하고 있습니다. JSpinner가 증가하거나 감소 할 때 데이터베이스에 값을 저장해야합니다. 그러나 문제는 JSpinners가 나에게 오래된 가치를 부여한다는 것입니다. 예 - 표시되는 시간이 09:30
이고 시간이 10:30
으로 증가하면 반환 값으로 09:30이 표시됩니다. 내가 두 번 이전 값을 얻고있다하지만 난 내가 새 값을 얻고있다 spinner.getValue
를 사용하고있는 경우 그러나 긴 형식으로되어 tf.getText()
를 사용하고 있다면 다음 코드JSpinner에서 이전 값을 제공합니다.
업데이트] 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);
}
}
을 사용하고
Thu Jan 01 10:18:00 IST 1970
Thu Jan 01 11:18:00 IST 1970
회 전자 형식은 11:18
으로 지정해야합니까?
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –
[this] (http://stackoverflow.com/questions/3949382/jspinner-value-change-events) 도움이 될지 모르지만 이것이 귀하가 찾고있는 것일 수 있습니다. – supersam654
@AndrewThompson 코드가 너무 커서 다른 부분이 내 문제와 관련하여 불필요합니다 –