2015-04-29 6 views
1

Я использую WindowBuilder для создания графического интерфейса. Я немного новичок в JFrame, и у меня есть проблема: я добавил JSpinner, и я хочу сохранить число, которое я положил в свой счетчик, чтобы я мог использовать его позже. Может кто-нибудь, пожалуйста, помогите мне? Благодарю.Преобразование значения JSpinner в новый int

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JTextField; 
import java.awt.BorderLayout; 
import javax.swing.SwingConstants; 
import java.awt.Font; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerNumberModel; 
import java.awt.Color; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 


public class frame1 { 

    private JFrame frame; 
    private JTextField txtHoeveelEuroWil; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        frame1 window = new frame1(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public frame1() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(null); 

     JSpinner spinner = new JSpinner(); 
     spinner.setModel(new SpinnerNumberModel(20, 20, 500, 20)); 
     spinner.setBounds(116, 100, 200, 50); 
     frame.getContentPane().add(spinner); 

     int value; 

     JButton btnNewButton = new JButton("OK"); 
     btnNewButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 

       //value=Integer.parseint ??? 

       //what should I type here to save the number that I entered 
       //in the spinner? 


      } 
     }); 
     btnNewButton.setBounds(172, 177, 89, 32); 
     frame.getContentPane().add(btnNewButton); 
    } 

} 

ответ

0

Попробуйте

try { 
     spinner.commitEdit(); 
    } 
    catch (ParseException pe) {{ 
     // Edited value is invalid, spinner.getValue() will return 
     // the last valid value, you could revert the spinner to show that: 
     JComponent editor = spinner.getEditor() 
     if (editor instanceof DefaultEditor) { 
      ((DefaultEditor)editor).getTextField().setValue(spinner.getValue()); 
     } 
     // reset the value to some known value: 
     spinner.setValue(fallbackValue); 
     // or treat the last valid value as the current, in which 
     // case you don't need to do anything. 
    } 
    int value = (Integer)spinner.getValue(); 
+0

Спасибо вам большое! –

+0

@RaymondTimmermans Вы должны называть 'commitEdit', чтобы получить последнее значение. В противном случае, если пользователь отредактировал счетчик, вы не получите обновленное значение, вместо этого вы получите старое значение;) – MCHAppy

0

Чтобы сохранить значение и использовать его, вы можете установить переменную поле, чтобы удержать его. Поэтому в вашем классе fram1 добавьте getter и setter для переменной. Затем установите переменную нажатием кнопки.

public class frame1 { 

    //default to -1 
    private int spinnerValue = -1; 

    private void setSpinnerValue(aValue) { 
     spinnerValue = aValue; 
    } 

    public int getSpinnerValue() { 
     return spinnerValue; 
    } 

    private void initialize() { 

     // blah blah 

     btnNewButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       // here set a value 
       setSpinnerValue((Integer) spinner.getValue()); 
      } 
     }); 
    } 
} 

тогда, когда вам нужно значение, вы можете использовать экземпляр frame1 и вызвать этот метод

frame1.getSpinnerValue(); 
Смежные вопросы