JSlider exibido na vertical e em diagonal

6 respostas
R

Oi Pessoal,

Preciso muito de um help de vcs! Faz tempo que não volto no GUJ, era para ter voltado antes mas os tempos e eventos da vida não me permitiram.
Assim: Estou enviando atachado um arquivo para demonstrar minha dúvida e pedido de ajuda!
Nesse exemplo o JSlider que eu uso está na horizontal tal como aprendi…
Pergunta: Tem como criar um JSlider para ficar posicionado na vertical e tb em diagonal???
Alguem conhece um exemplo?!

Aguardo noticias urgentinho!
PS.: Melhorando a pergunta: usei uma opção do JSlider que é JSlider( SwingConstants.NORTH_WEST, 0, 200, 10 );
para que o slider ficasse em diagonal, mas deu esses erros:

Exception in thread main java.lang.IllegalArgumentException: orientation must be one of: VERTICAL, HORIZONTAL

at javax.swing.JSlider.checkOrientation(JSlider.java:174)

at javax.swing.JSlider.(JSlider.java:274)

at SliderDemo.(SliderDemo.java:32)

at SliderDemo.main(SliderDemo.java:58)

Parece que nesse exemplo ele está dizendo que só aceita as orientações horizontal e vertical, mas tem muitas outras como faço para po-las em uso tb…?

sds


6 Respostas

E

Você pode deixar seu JSlider orientado horizontalmente (é o default) ou verticalmente (chamando o método setOrientation com o parâmetro SwingConstants.VERTICAL). Nunca ouvi falar de um slider (mesmo em outras linguagens) que ficasse em diagonal.

http://java.sun.com/javase/6/docs/api/javax/swing/JSlider.html#setOrientation(int)

E

Exemplo.

package guj;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class ExemploJSlider extends JFrame {
	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JSlider sldHorizontal = null;
	private JSlider sldVertical = null;
	private JLabel lblSliders = null;

	private JSlider getSldHorizontal() {
		if (sldHorizontal == null) {
			sldHorizontal = new JSlider();
			sldHorizontal.setPaintLabels(true);
			sldHorizontal.setMajorTickSpacing(20);
			sldHorizontal.setMinorTickSpacing(5);
			sldHorizontal.setPaintTicks(true);
			sldHorizontal
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							lblSliders.setText(String.format("%d, %d",
									sldHorizontal.getValue(), sldVertical
											.getValue()));
						}
					});
		}
		return sldHorizontal;
	}
	private JSlider getSldVertical() {
		if (sldVertical == null) {
			sldVertical = new JSlider();
			sldVertical.setOrientation(JSlider.VERTICAL);
			sldVertical.setPaintLabels(true);
			sldVertical.setMajorTickSpacing(20);
			sldVertical.setMinorTickSpacing(5);
			sldVertical.setInverted(true);
			sldVertical.setPaintTicks(true);
			sldVertical
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							lblSliders.setText(String.format("%d, %d",
									sldHorizontal.getValue(), sldVertical
											.getValue()));
						}
					});
		}
		return sldVertical;
	}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				ExemploJSlider thisClass = new ExemploJSlider();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}
	public ExemploJSlider() {
		super();
		initialize();
	}
	private void initialize() {
		this.setSize(400, 300);
		this.setContentPane(getJContentPane());
		this.setTitle("Teste JSlider");
	}
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lblSliders = new JLabel();
			lblSliders.setHorizontalAlignment(SwingConstants.CENTER);
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getSldHorizontal(), BorderLayout.NORTH);
			jContentPane.add(getSldVertical(), BorderLayout.WEST);
			jContentPane.add(lblSliders, BorderLayout.CENTER);
		}
		return jContentPane;
	}
}


R

E em diagonal será que dá???

sds

R

É que quando digito SwingConstants. aparecem outras orientações

http://java.sun.com/javase/6/docs/api/constant-values.html#javax.swing.SwingConstants.NORTH_EAST

mas no meu eclipse ainda no fucntion!!

E agora?

E

Os únicos valores válidos são HORIZONTAL e VERTICAL. Se ele apresentou um erro dizendo que “não aceita nenhum outro valor que não seja HORIZONTAL ou VERTICAL” então pare de insistir; crie o seu próprio, se você ainda quer uma coisa parecida com o JSlider só que em diagonal. (Em particular nunca vi nenhum programa que tivesse esse tipo de controle em diagonal. Você pode indicar algum site da Web que tenha algum Flash ou applet que tenha um controle desses, só para ter uma idéia?)

R

entanglement:
Os únicos valores válidos são HORIZONTAL e VERTICAL. Se ele apresentou um erro dizendo que “não aceita nenhum outro valor que não seja HORIZONTAL ou VERTICAL” então pare de insistir; crie o seu próprio, se você ainda quer uma coisa parecida com o JSlider só que em diagonal. (Em particular nunca vi nenhum programa que tivesse esse tipo de controle em diagonal. Você pode indicar algum site da Web que tenha algum Flash ou applet que tenha um controle desses, só para ter uma idéia?)

Caro amigo,
Esse é um trabalho original, inédito, difícil de achar e difícil de confeccionar, talvez vc possa propor uma outra forma de controlar. A ideia é a seguinte: Pensa nas retas de um triangulo equilátero (que já está pronto), os pontos que estão no decorrer dessas retas do triangulo precisam ser escolhidos de laguma forma, seja por JTextField, JComboBox, etc… apenas foi uma ideia que surgiu usar JSlider pelo fato dele ser capaz de marcar os pontos abaixo do slider… Vc viu o link que eu enviei que explicação sobre as opções SwingConstant = NORTH_WEST, etc… Como será que se pode fazer plug-in dessas opções que parecem exstir… tu concorda?

sds

Criado 14 de junho de 2010
Ultima resposta 15 de jun. de 2010
Respostas 6
Participantes 2