2017-04-04 3 views
0

저는 자바 프로그래밍에 익숙하지 않아서 JFrame에서 JSpinner를 사용하여 사용자가 시간 (HH : mm : ss 형식)을 입력 할 수있게 해주는 자바 프로그램을 만들었습니다. JSPinner의 코드를 사용자 정의하여 만들어졌습니다 (아래 참조). 내가 뭘 하려는지 사용자가 입력 한 값 (시간)을 얻고 JLabel에 표시된 문자열로 변환하는 것입니다. 상태 변경 이벤트를 사용해 보았지만 정수 모델에만 사용했습니다.JSpinner에서 TIME 값 가져 오기

질문의 맥락에서의 JSpinner의 사용자 정의 코드

Date date = new Date(); 
SpinnerDateModel sm = new SpinnerDateModel(date, null, null, Calendar.HOUR_OF_DAY); 

time_spinner = new javax.swing.JSpinner(sm); 

JSpinner.DateEditor te = new JSpinner.DateEditor(time_spinner, "HH:mm:ss"); 
time_spinner.setEditor(te); 

getContentPane().add(time_spinner, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 50, 120, 30)); 
+1

'의 JSpinner # getValue을 읽는 당신의 시간 가치가있을 것이다는 Date 목적을 가지고 그것을 포맷해야 '는 회 전자의 "시간"을 나타내는 '날짜'값을 반환합니다. 기본 개념은 [회 전자 사용 방법] (https://docs.oracle.com/javase/tutorial/uiswing/components/spinner)에 나와 있습니다. html) – MadProgrammer

+0

[예] (http://stackoverflow.com/questions/23103328/how-change-formate-time-from-jspinner-solved/23103458#23103458) – MadProgrammer

+0

받은 값을 JLabe로 전달하려면 어떻게해야합니까? 어디 선가? 테스트 콘솔에 인쇄 해 보았지만 아무 것도 반환되지 않았습니다. 귀하의 예제 개체 값 = time_spinner.getValue(). toString(); 및 if 문을 삭제하지만 HH : mm 형식을 제거하고 System.out.print (value)를 사용하여 인쇄하려고했습니다. @MadProgrammer –

답변

3

, JSpinner#getValueDate 객체를 반환합니다. 어느 방식이

이것은 How to use Spinners에서 보여 (예 HH:mm:ss에 대한) 당신을 위해 필요한 사항을 당신은

import java.awt.Dimension; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerDateModel; 
import javax.swing.SwingUtilities; 

public class Test1 { 

    public static void main(String[] args) { 
     new Test1(); 
    } 

    public Test1() { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame(); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private JSpinner time_spinner; 

     public TestPane() { 
      setLayout(new GridBagLayout()); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridwidth = GridBagConstraints.REMAINDER; 
      Date date = new Date(); 
      SpinnerDateModel sm = new SpinnerDateModel(date, null, null, Calendar.HOUR_OF_DAY); 

      time_spinner = new javax.swing.JSpinner(sm); 

      JSpinner.DateEditor te = new JSpinner.DateEditor(time_spinner, "HH:mm:ss"); 
      time_spinner.setEditor(te); 

      add(time_spinner, gbc); 

      JButton btn = new JButton("Show me the time"); 
      btn.addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent e) { 
        Object value = time_spinner.getValue(); 
        if (value instanceof Date) { 
         Date date = (Date)value; 
         SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); 
         String time = format.format(date); 

         JOptionPane.showMessageDialog(TestPane.this, "The time is " + time); 
        } 
       } 
      }); 
      add(btn, gbc); 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return new Dimension(200, 200); 
     } 
    } 

}