Box

Opa pessoal, eu estou precisando fazer um box que eu nem sei o nome.

é tipo uma combo box, com uma fecha pra cima e outra pra baixa, conforme vc clica ele repercurte no conteúdo.

Alguem sabe se existem alguma api pronta ou vou ter de fazer um JtextField, com os botões?

VELO

Algo como http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JSpinner.html ?

Esse mesmo.

Valeu cara…

Exemplo pra quem quer se divertir…

[code]/*

//import statements
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.;
import java.util.
;

/**

  • SpinnerFrame.java

  • The Frame adding three different types of

  • Spinner Components

  • @author Rahul Sapkal(rahul@javareference.com)
    */
    public class SpinnerFrame extends JFrame
    {
    private JSpinner m_listSpinner;
    private JSpinner m_numberSpinner;
    private JSpinner m_dateSpinner;

    private SpinnerListModel m_listSpinnerModel;
    private SpinnerNumberModel m_numberSpinnerModel;
    private SpinnerDateModel m_dateSpinnerModel;

    //constructor
    public SpinnerFrame()
    {
    super(“JSpinner Demonstration”);

      //creating the list spinner
      createListSpinner();
    
      //creating the number spinner
      createNumberSpinner();
      
      //creating the date spinner
      createDateSpinner();
      
      //adding Spinners to the frame
      this.getContentPane().setLayout(new FlowLayout());
      
      JPanel spinnerPanel = new JPanel(new GridLayout(3, 1, 5, 5));
      spinnerPanel.add(m_listSpinner);
      spinnerPanel.add(m_numberSpinner);
      spinnerPanel.add(m_dateSpinner);
      
      this.getContentPane().add(spinnerPanel);
    

    }

    private void createNumberSpinner()
    {
    //current value
    Double current = new Double(5.50);

      //Min value
      Double min = new Double(0.00);
      
      //Max value
      Double max = new Double(10.00);
      
      //Step value
      Double step = new Double(0.25);
      
      //creating the number spinner model
      m_numberSpinnerModel = new SpinnerNumberModel(current, min, max, step);
      
      //creating the number spinner
      m_numberSpinner = new JSpinner(m_numberSpinnerModel);    
    

    }

    private void createDateSpinner()
    {
    Calendar rightNow = Calendar.getInstance();

      //current date
      Date current = rightNow.getTime();
      
      //Start date, yesterday, same time
      rightNow.set(Calendar.HOUR_OF_DAY, -24);
      Date start = rightNow.getTime();
      
      //End date, tomorrow, same time
      rightNow.set(Calendar.HOUR_OF_DAY, 48);
      Date end = rightNow.getTime();
      
      //Step value, in this case Hour
      int step = Calendar.HOUR_OF_DAY;
      
      //creating the date spinner model
      m_dateSpinnerModel = new SpinnerDateModel(current, start, end, step);
      
      //creating the date spinner
      m_dateSpinner = new JSpinner(m_dateSpinnerModel);
    

    }

    private void createListSpinner()
    {
    //Creating ordered sequence list
    List sequence = new ArrayList();

      sequence.add(new String("I - First"));
      sequence.add(new String("II - Second"));
      sequence.add(new String("III - Third"));
      sequence.add(new String("IV - Fourth"));
      sequence.add(new String("V - Fifth"));
      sequence.add(new String("VI - Sixth"));
      
      //creating the list spinner model
      m_listSpinnerModel = new SpinnerListModel(sequence);
      
      //creating the list spinner
      m_listSpinner = new JSpinner(m_listSpinnerModel);
    

    }

    public static void main(String argv[])
    {
    SpinnerFrame spinnerFrame = new SpinnerFrame();
    spinnerFrame.setSize(350, 200);
    spinnerFrame.setVisible(true);
    }
    } [/code]

fiquei com uma dúvida…

quero adicionar 2 desses spinners, digamos com o valor 10 em cada um. Quando eu incrementar um, quero decrementar o outro (um fica com 11 e o outro com 9).

Alguem sabe com fazer isso?

VELO

[quote=velo]fiquei com uma dúvida…

quero adicionar 2 desses spinners, digamos com o valor 10 em cada um. Quando eu incrementar um, quero decrementar o outro (um fica com 11 e o outro com 9).

Alguem sabe com fazer isso?

VELO[/quote]

um listener para eles resolveria não? Uma idéia seria identificar se foi incremento (X) ou decremento (Y), após isto verificar de qual componente que veio, aí é só um teste de lógica.

Outra alternativa, seria identificar um valor máximo e a cada interação do usuario seria fazer:

spinner.setValor(VALOR_MAXIMO - valorDoOutroSpinner)

Vou fazer uma thread que le os atributos e atualiza, mais facil, mais rapido.

Cuidado com Threads e Swing…

PQ?

tenho mais uma dúvida…

Tem como eu forçar para que o numero digitado seja sempre multiplo de outro numero, digamos 8, serah que tem como?

VELO

[quote=velo]tenho mais uma dúvida…

Tem como eu forçar para que o numero digitado seja sempre multiplo de outro numero, digamos 8, serah que tem como?

VELO[/quote]

no envento:

if (digitado % 8 != 0) { e.consume(); }

e = instancia do evento…