Box

9 respostas
velo

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

9 Respostas

Lucas_Teixeira

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

velo

Esse mesmo.

Valeu cara....

Exemplo pra quem quer se divertir.....

/*
* This example is from javareference.com
* for more information visit,
* http://www.javareference.com
*/

//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([email removido])
*/
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);
    }
}
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

Lucas_Teixeira

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

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)
velo

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

Lucas_Teixeira

Cuidado com Threads e Swing…

velo

PQ?

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

Lucas_Teixeira

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

no envento:

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

e = instancia do evento…

Criado 27 de dezembro de 2004
Ultima resposta 30 de dez. de 2004
Respostas 9
Participantes 2