[nobr]to resolve my problem use the following working code
package jspinner;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerListModel;
import javax.swing.SpinnerModel;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* Crea una dialog che permette di aggiornare i valori elencati
* da un componente di tipo JSpinner.
*
* @author Andrea Manneschi
* @version 1.1, 20-10-2005
* @since 1.0, 12-10-2005
*/
public class UpdateValue extends JFrame implements ActionListener, ChangeListener {
private static final long serialVersionUID = 4766478498432888993;
/**store all jtextfield component present on dialog*/
private HashMap dataMap = new HashMap();
private JSpinner conservatoriaJS = null;
private SpinnerModel conservatoriaJSM = null;
private String NOME_JTF_NAME = "NOME_JTF_NAME";
private final static String TITLE = "Modifica conservatoria";
public UpdateValue() {
super(TITLE);
init();
}
public void actionPerformed(ActionEvent e) {
updateConservatoria();
}
private JPanel createButtonPanel() {
JButton updateConservatoriaJB = new JButton("Aggiorna");
updateConservatoriaJB.addActionListener(this);
//Layout the component
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
panel.add(updateConservatoriaJB);
return panel;
}
/**
* Crea un oggetto spinner con l'elenco di tutte le conservatorie
* presenti nel database.
*
* @return
*/
private JSpinner createConservatoriaJS() {
//Creo la combo box per le conservatorie
ArrayList conservatoriaBeanList = new ArrayList(10);
conservatoriaBeanList.add(0, "uno");
conservatoriaBeanList.add(1, "due");
conservatoriaBeanList.add(2, "tre");
conservatoriaJSM = new SpinnerListModel(conservatoriaBeanList);
conservatoriaJS = new JSpinner(conservatoriaJSM);
conservatoriaJS.addChangeListener(this);
return conservatoriaJS;
}
private JPanel createDataAndLabelPanel() {
int size = 20;
Border titleBorder = BorderFactory.createTitledBorder(new LineBorder(Color.black), "DATI CONSERVATORIA");
Border borderOutside = new CompoundBorder(new EmptyBorder(size, size, size, size), titleBorder);
Border borderInside = new EmptyBorder(size, size, size, size);
//space between label and data inside panel
Component rigidArea = Box.createRigidArea(new Dimension(15, 10));
JPanel panel = new JPanel();
//set vertical box layout
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
//setup border
panel.setBorder(new CompoundBorder(borderOutside, borderInside));
//layout component
panel.add(createLabelPanel());
panel.add(rigidArea);
panel.add(createDataPanel());
//setup size
panel.setMinimumSize(new Dimension(400, panel.getPreferredSize().height));
panel.setMaximumSize(new Dimension(400, panel.getPreferredSize().height));
panel.setPreferredSize(new Dimension(400, panel.getPreferredSize().height));
return panel;
}
private JPanel createDataPanel() {
JTextField nome = new JTextField("god");
dataMap.put(NOME_JTF_NAME, nome);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(nome);
return panel;
}
private JPanel createLabelPanel() {
JLabel nome = new JLabel("<html>Nome*:<br><font size=2>*max 20 ch</font></html>");
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(nome);
return panel;
}
private JPanel createSearchAndUpdatePanel() {
int size = 20;
Border titleBorder = BorderFactory.createTitledBorder(new LineBorder(Color.black), "DATI PER LA RICERCA");
Border borderOutside = new CompoundBorder(new EmptyBorder(size, size, size, size), titleBorder);
Border borderInside = new EmptyBorder(size, size, size, size);
//space between label and data inside panel
Component rigidArea = Box.createRigidArea(new Dimension(20, 1));
JPanel panel = new JPanel();
//set vertical box layout
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
//setup border
panel.setBorder(new CompoundBorder(borderOutside, borderInside));
//layout component
panel.add(createConservatoriaJS());
panel.add(rigidArea);
//setup size
//panel.setMinimumSize(new Dimension(400, panel.getPreferredSize().height));
//panel.setMaximumSize(new Dimension(400, panel.getPreferredSize().height));
//panel.setPreferredSize(new Dimension(400, panel.getPreferredSize().height));
return panel;
}
/**
* Crea il layout della maschera di ricerca.
*
*/
private void init() {
Container contentPane = this.getContentPane();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
JPanel searchAndUpdatePanel = createSearchAndUpdatePanel();
JPanel formPanel = createDataAndLabelPanel();
JPanel buttonPanel = createButtonPanel();
contentPane.add(searchAndUpdatePanel);
contentPane.add(formPanel);
contentPane.add(buttonPanel);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public void stateChanged(ChangeEvent e) {
JSpinner source = (JSpinner) e.getSource();
String nome = (String)source.getValue();
((JTextField)dataMap.get(NOME_JTF_NAME)).setText(nome);
}
/**
* Modifica sul database, il nome ed il codice della conservatoria.
*
*/
private void updateConservatoria() {
String text = ((JTextField)dataMap.get(NOME_JTF_NAME)).getText();
JOptionPane.showMessageDialog(this, "how i can change the jspinner displayed value?\nwith the following value: "+text);
//TODO missing code, how i can change the jspinner displayed value?
}
public static void main(String[] args) {
new UpdateValue();
}
}
[/nobr]