JSpinner(NumberFormat)の初期値をnullにする(見た目だけ)
目標
画面にJSpinnerが配置されているとする. このとき,初期値が入っていない状態にしたい.
コードサンプル
public class SpinnerGui extends JDialog{ public static void main(String[] args) { SpinnerGui frame = new SpinnerGui(); frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); frame.setBounds(10,10,300,200); frame.setTitle("すぴなー"); frame.setVisible(true); } public SpinnerGui() { final JSpinner spinner = new JSpinner(new SpinnerNumberModel(0,0,10,1)); final JTextField spinnerTF = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField(); final Color spinnerForeground = spinnerTF.getForeground(); final Color spinnerBackground = spinnerTF.getBackground(); spinnerTF.setColumns(5); spinner.addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent ce){ if(((Integer)spinner.getValue()).intValue() == 0){ spinnerTF.setForeground(spinnerBackground); } else spinnerTF.setForeground(spinnerForeground); } }); spinnerTF.setForeground(spinnerBackground); JPanel p = new JPanel(); p.add(spinner); getContentPane().add(p,BorderLayout.CENTER); } }
だいたい,このページの中身通り.先人に感謝
Is it possible for a JSpinner to show no default value? (Swing / AWT / SWT forum at Coderanch)