How i can update a value inside jspinner component

I have a jspinner component inside a dialog

My jspinner is populate with an arrayList

A user can change a value inside a textfiled and then when he click on OK button

want to put the modify text inside the jspinner component

How i can do it?

I try to explain with an example:

--jdialog

Jspinner component:paolo

text field component:roberto

OK button(<- a user press the button)

--

When the user click ok OK button, how i can change the text on the jspinner component, like this:

--jdialog

Jspinner component:roberto

text field component:roberto

OK button

--

thx to all

[681 byte] By [andream1977a] at [2007-10-2 6:01:39]
# 1

[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]

andream1977a at 2007-7-16 13:02:02 > top of Java-index,Desktop,Core GUI APIs...
# 2

make the arraylist a class variable

class UpdateValue extends JFrame implements ActionListener, ChangeListener {

ArrayList conservatoriaBeanList = new ArrayList(10);//<

private HashMap dataMap = new HashMap();

then your updateConservatoria() is this (note: need error handling)

private void updateConservatoria() {

String text = ((JTextField)dataMap.get(NOME_JTF_NAME)).getText();

conservatoriaBeanList.add(text);

conservatoriaJSM = new SpinnerListModel(conservatoriaBeanList);

conservatoriaJS.setModel(conservatoriaJSM);

}

Michael_Dunna at 2007-7-16 13:02:02 > top of Java-index,Desktop,Core GUI APIs...
# 3

i don't want to add one element in my jspinner, i want to sostitute an element, example:

before the user press a button the jspinner have this element

dog

cat

cicken

after user write the word like "snake" and press the update button when the jspinner shows the element cat:

dog

snake

cicken

the element snake must in the same position of element cat

andream1977a at 2007-7-16 13:02:02 > top of Java-index,Desktop,Core GUI APIs...
# 4

private void updateConservatoria() {

String text = ((JTextField)dataMap.get(NOME_JTF_NAME)).getText();

int index = conservatoriaBeanList.indexOf(conservatoriaJS.getValue());

conservatoriaBeanList.remove(index);

conservatoriaBeanList.add(index,text);

conservatoriaJSM = new SpinnerListModel(conservatoriaBeanList);

conservatoriaJS.setModel(conservatoriaJSM);

}

Michael_Dunna at 2007-7-16 13:02:02 > top of Java-index,Desktop,Core GUI APIs...