Componente com comportamento como os ícones do Windows [RESOLVIDO]

1 resposta
W

Bom dia pessoal,

Existe algum componente no Swing que tenha comportamento semelhante aos ícones do Windows? Isto é, ao clicar uma vez fica selecionado, duplo clique gera algum evento, passar o mouse em cima fica mais claro…
Preciso fazer um frame que contenha todas as mesas de um restaurante e gostaria de um comportamento mais ou menos assim…

Pensei no JButton, mas como fazê-lo ficar com esse comportamento?!

Obrigado!

RESOLVIDO:

felipe, usei a tua idéia mas com um JToggleButton que me atendeu melhor. Obrigado!

1 Resposta

F

Você pode implementar alguns listeners e adicioná-los ao botão para que tenha as funcionalidades que você deseja.
talvez este exemplo lhe dê uma idéia.

import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class MyButton  extends JButton implements FocusListener, MouseListener{
	
	private Color oldColor;

	public MyButton() {
		init();
	}

	public MyButton(String text) {
		super(text);
		init();
	}
	
	private void init(){
		setSize(50, 100);
		addFocusListener(this);
		addMouseListener(this);
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		if (e.getClickCount() == 2){
			System.out.println("click duplo");
		}
		
	}

	@Override
	public void mousePressed(MouseEvent e) {	}

	@Override
	public void mouseReleased(MouseEvent e) { 	}

	@Override
	public void mouseEntered(MouseEvent e) {
		oldColor = this.getBackground();
		this.setBackground(Color.BLUE);
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		if(oldColor != null){
			this.setBackground(oldColor);
		}
		
	}

	@Override
	public void focusGained(FocusEvent e) {
		System.out.println("Botão Focado.");
		
		
	}

	@Override
	public void focusLost(FocusEvent e) {
		System.out.println("Botão Não Focado.");
		
	}
	
	
	public static void main(String[] args) {
		JFrame fr = new JFrame("Teste");
		fr.setSize(300, 300);
		fr.getRootPane().add(new MyButton("Teste"));
		fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fr.setVisible(true);
	}
	
	

}

neste exemplo extendi o JButton e implementei os Listeners FocusListener e MouseListener
no método init() adicionei estes listeners ao botão.

espero ter ajudado.

Criado 27 de janeiro de 2012
Ultima resposta 27 de jan. de 2012
Respostas 1
Participantes 2