2014-11-20 3 views
0

Neatbeans 스윙에서 JSpinner를 현재 시간으로 설정하고 사용자가 화살표를 위아래로 클릭하여 시간을 선택할 수있게하려고합니다. 어떻게 든 처음에는 작동하지만 화살표를 클릭하면 시간을 변경할 수없는 이러한 코드가 있습니다. 여기 내 코드는 다음과 같습니다Java에서 JSpinner를 올바르게 설정하는 방법은 무엇입니까?

JSpinner spinner = new JSpinner(); 
spinner.setModel(new SpinnerDateModel()); 
mySpinnerControl.setEditor(new JSpinner.DateEditor(spinner, "HH:mm")); 

내가 화살표 키를 클릭하면, 시간이 늘 변경이 오류 메시지가 있어요 :

java.lang.ClassCastException: javax.swing.SpinnerNumberModel cannot be cast to javax.swing.SpinnerDateModel 

내 코드에 어떤 문제가 있습니까? 나는 그물을 통해 연구했고 그들은 모두 같은 코드를 가지고있다. 도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

+0

더 도움이 필요하면 [MCVE] (http://stackoverflow.com/help/mcve)를 표시하십시오. 몇 가지 문제가있을 수 있습니다. – Radiodef

+0

죄송합니다. 자바 프로그래밍에 익숙하지 않습니다. 예외를 throw하는 코드가 무슨 뜻입니까? 전체 오류 메시지를 의미합니까? 또는 내 코드? –

+0

실제로 내 편집 된 댓글을 참조하십시오. (페이지를 새로 고침하십시오.) 그리고 네, 당신의 코드. 예외가 발생하면 줄 번호가 표시됩니다. – Radiodef

답변

2

mySpinnerControl은 무엇입니까? mySpinnerControlspinner으로 바꿨을 때 나는 당신의 모범을 얻을 수있었습니다. 내 생각 엔 다른 컴포넌트에서 에디터를 설정했기 때문에 spinner은 여전히 ​​숫자/에디터를 사용하며 숫자/에디터는 날짜/시간 값을 설정할 때 예외를 생성합니다.

다음 코드는 나를 위해 일한 :

public class Spinner extends JFrame { 
    public Spinner() { 

     JSpinner spinner = new JSpinner(); 
     spinner.setModel(new SpinnerDateModel()); 
     spinner.setEditor(new JSpinner.DateEditor(spinner, "HH:mm")); 

     getContentPane().add(spinner, BorderLayout.CENTER); 
    } 

    public static void main(String[] args) { 
     Spinner f = new Spinner(); 
     f.pack(); 
     f.setVisible(true); 
    } 

} 
+0

이 용어를 사용하는 방법을 모르지만 netbeans에서 스윙 컨트롤을 사용하고 있습니다. mySpinnerControl은 변수 이름을 사용하는 스윙 컨트롤입니다. 나는 netbeans의 pallete 창에서 제어 할 .. –

0

마침내 일을 만들 .. 난! 난 그냥 다음과 같은 2 선 코드 사용 :

mySpinnerControl.setModel(new SpinnerDateModel()); 
mySpinnerControl.setEditor(new JSpinner.DateEditor(mySpinnerControl, "HH:mm")); 

을하지만 당신의 응답 @cello 및 @Radiodef .. 대단히 감사들 정말 감사합니다!

0

내가 JSpinner를 쓰기 전에 아래 에서처럼 Date 함수를 사용하도록 알려주기 바란다.

Date d1 = new Date(0); 
    Calendar cl = Calendar. getInstance();  
    cl.setTime(d1);  
    System.out.println("today is " + d1.toString()); 

이 만 "DD"에 형식을 follows.Changing로 사용할 수있는 JSpinner에가있는 date.To이 정수 파서합니다 (주석 행)을 사용하여 변환 조작을 제공 할 수 있습니다.

SimpleDateFormat formaterD = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
String spinnerDate=formaterD.format(testSpin.getValue()); 
//int z=Integer.parseInt(spinnerValue); 
System.out.println(spinnerDate); 
//System.out.println("Date in integer format:"+z); 

//To err is Human!Please comment if I'm wrong. 
관련 문제