JSpinner does not display data

Y

yingjian.ma1955

Hi,

I have a program using a JSpinner. But JSpinner does not display data.
Could you tell me why? Please be detail. Thanks a lot.

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class Spinner1 extends JFrame implements ChangeListener{
private JSpinner m_Spinner = new JSpinner();;
private SpinnerNumberModel m_Model;
private JLabel m_l= new JLabel();
public Spinner1(){
super("JSpinner");
Container pane = getContentPane();
FlowLayout flo = new FlowLayout();
pane.setLayout(flo);
pane.add(m_Spinner);
pane.add(m_l);
}
private void createNumberSpinner(){
int loan = 300000;
int min = 100000;
int max = 600000;
int step = 50000;
m_Model = new SpinnerNumberModel(loan, min, max, step);
m_Spinner = new JSpinner(m_Model);
m_Spinner.addChangeListener( this );
m_Spinner.setPreferredSize(new Dimension(100,20));
}
public static void main(String argv[]){
Spinner1 spinnerFrame = new Spinner1();
spinnerFrame.createNumberSpinner();
spinnerFrame.setSize(200, 180);
spinnerFrame.setLocation(200, 180);
spinnerFrame.setVisible(true);

}
public void stateChanged(ChangeEvent e){
Object i = m_Spinner.getValue();
m_l.setText("The loan Amount is " + i.toString() + ".");
}
}
 
A

Andrew T.

Hi,

I have a program using a JSpinner. But JSpinner does not display data.
Could you tell me why?

Some hints are in the comments.

<sscce>
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class Spinner1 extends JFrame
implements ChangeListener{

// do not instantiate this yet!
// we do not need a 'default' spinner..
private JSpinner m_Spinner;

private SpinnerNumberModel m_Model;
private JLabel m_l= new JLabel();
public Spinner1(){
super("JSpinner");
Container pane = getContentPane();
FlowLayout flo = new FlowLayout();
pane.setLayout(flo);
// call createNumberSpinner here, or else
// hit a NullPointerException
createNumberSpinner();
pane.add(m_Spinner);
pane.add(m_l);
}
private void createNumberSpinner(){
int loan = 300000;
int min = 100000;
int max = 600000;
int step = 50000;
m_Model = new SpinnerNumberModel(loan, min, max, step);
m_Spinner = new JSpinner(m_Model);
m_Spinner.addChangeListener( this );
m_Spinner.setPreferredSize(new Dimension(100,20));


}


public static void main(String argv[]){
Spinner1 spinnerFrame = new Spinner1();
// your frame is already on-screen with the 'default'
// spinner - it is too late to call this ..
//createNumberSpinner();
spinnerFrame.pack();
spinnerFrame.setSize(200, 180);
spinnerFrame.setLocation(200, 180);
spinnerFrame.setVisible(true);

}
public void stateChanged(ChangeEvent e){
Object i = m_Spinner.getValue();
m_l.setText("The loan Amount is " + i.toString() + ".");
}
}
</sscce>

HTH

Andrew T.
 
O

Oliver Wong

Hi,

I have a program using a JSpinner. But JSpinner does not display data.
Could you tell me why? Please be detail. Thanks a lot.

I'm gonna number the lines, and snip a lot of code.

[...]
public class Spinner1 extends JFrame implements ChangeListener{
1 > private JSpinner m_Spinner = new JSpinner();;
[...]
public Spinner1(){
[...]
2 > pane.add(m_Spinner);
[...]
}
private void createNumberSpinner(){
[...]
3 > m_Spinner = new JSpinner(m_Model);
[...]
}
public static void main(String argv[]){
4 > Spinner1 spinnerFrame = new Spinner1();
5 > spinnerFrame.createNumberSpinner();
[...]
} [...]
}

The order of execution is:

04 Spinner constructor is invoked.
01 an empty spinner object (with no model) created, and stored in m_spinner.
02 the spinner object in m_spinner is added to the content pane.
05 createNumberSpinner() is invoked.
03 a new spinner object (with a model) is created and stored in m_spinner.

Thus the spinner object which actually contains the model data is never
added to the content pane. It's a different spinner that's being added.

- Oliver
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top