JWindow com KeyListener [RESOLVIDO]

12 respostas
Naum_Jefferson

Pessoal tou com o problema aqui, é o seguinte…
tou querendo colocar uma tela aqui com JWindow e nesta tela implementei o keyListener…
segue o codigo:

package gui;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.Window;

import javax.swing.JWindow;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.SwingConstants;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class TelaVenda extends JWindow implements KeyListener{

	private JPanel jContentPane = null;
	private JLabel labelMarketing = null;

	public TelaVenda() {
		super();
		initialize();
	}

	public TelaVenda(GraphicsConfiguration arg0) {
		super(arg0);
		initialize();
	}

	public TelaVenda(Frame arg0) {
		super(arg0);
		initialize();
	}

	public TelaVenda(Window arg0) {
		super(arg0);
		initialize();
	}

	public TelaVenda(Window arg0, GraphicsConfiguration arg1) {
		super(arg0, arg1);
		initialize();
	}

	private void initialize() {
		super.setSize(800, 600);
		super.setPreferredSize(new Dimension(1024, 768));
		super.setMaximumSize(new Dimension(1024, 768));
		super.setMinimumSize(new Dimension(800, 600));
		super.setContentPane( getJContentPane());
		super.addKeyListener(this);
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			labelMarketing = new JLabel();
			labelMarketing.setHorizontalAlignment(SwingConstants.CENTER);
			labelMarketing.setSize(new Dimension(150, 80));
			labelMarketing.setLocation(new Point(15, 15));
			labelMarketing.setText("MARKETING");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(labelMarketing, null);
			jContentPane.addKeyListener(this);
		}
		return jContentPane;
	}

	public void keyPressed(KeyEvent e) {
		System.out.println("> "+e.getKeyText(e.getKeyCode()));
		if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
			this.setVisible(false);
		}
	}
	
	public void keyReleased(KeyEvent e) {
		System.out.println("> "+e.getKeyText(e.getKeyCode()));	
	}

	public void keyTyped(KeyEvent e) {
		System.out.println("> "+e.getKeyText(e.getKeyCode()));
	}
	
	public static void main(String args[]){
		TelaVenda tela = new TelaVenda(new JFrame());
		tela.setVisible(true);
	}
	

}

porém o listener nem da sinal de vida!!!

alguem pode me dizer pq?

grato

12 Respostas

luiz_renato

Cara,

Acho que vc teria que registrar um componente de entrada de dados ( p. ex um JTextFiekl) pra capturar as telcas digitadas.
Pelo que vi vc usa o keylistener p/ capturar as teclas digitadas num JPanel.

Naum_Jefferson

luiz_renato:
Cara,

Acho que vc teria que registrar um componente de entrada de dados ( p. ex um JTextFiekl) pra capturar as telcas digitadas.
Pelo que vi vc usa o keylistener p/ capturar as teclas digitadas num JPanel.

Mas ele nao deixa nem colocar o Focus no JTextField!!!

ViniGodoy

O que vc quer fazer?

Naum_Jefferson

Estou tentando fazer um tela de venda…
porém essa tela teria que ser fullscreen!!!

por isso pensei em JWindow!!!
é possivel?

grato!!!

ViniGodoy

E o que isso tem a ver com o KeyListener?

O JFrame também pode ser FullScreen. Há duas maneiras de fazer isso:
a) Dê um setUndecorated(true), antes de maximizar o seu JFrame;
b) Use o método setFullScreenWindow da classe GraphicsConfiguration.

No seu caso, é melhor usar a alternativa a, já que você não quer entrar em modo exclusivo.

Naum_Jefferson

ViniGodoy:
E o que isso tem a ver com o KeyListener?

Tem haver que no meu caso ai…
mesmo clicando no JWindow e precionando alguma tecla ele nao dá sinal nenhum!!!
mesmo eu registrando os ouvintes!!!

  1. Vlw pela dica!!!
ViniGodoy

Para registrar eventos para um form inteiro, ao invés de um único componente, veja:
http://www.guj.com.br/posts/list/140986.java

Naum_Jefferson

ViniGodoy:
Para registrar eventos para um form inteiro, ao invés de um único componente, veja:
http://www.guj.com.br/posts/list/140986.java

Vlw mais uma vez!!!

D

ViniGodoy:
E o que isso tem a ver com o KeyListener?

O JFrame também pode ser FullScreen. Há duas maneiras de fazer isso:
a) Dê um setUndecorated(true), antes de maximizar o seu JFrame;
b) Use o método setFullScreenWindow da classe GraphicsConfiguration.

No seu caso, é melhor usar a alternativa a, já que você não quer entrar em modo exclusivo.

Nunca consegui colocar o JFrame como FullScreen de verdade. Sempre aparece a barra principal so SO.
O JWindow sim.

ViniGodoy

Estranho, eu já coloquei várias vezes.

Mas… Precisava ressuscitar um tópico de quase 2 anos, já resolvido, para dizer isso?

D

ViniGodoy:
Estranho, eu já coloquei várias vezes.

Mas… Precisava ressuscitar um tópico de quase 2 anos, já resolvido, para dizer isso?

Não necessariamente. Só acho válido colocarmos parênteses. Mas se quiser posso criar um novo.
Usando o Ubuntu a barra de ferramentas nunca some!

ViniGodoy

O Java, de maneira geral, tem um péssimo suporte quando se trata de integrar-se ao SO.

Creio que com nenhuma classe você conseguirá um comportamento 100% adequado em todos os SOs suportados.
O FullScreenExclusiveMode é até possível fica com a janela toda para si, mas é adequado mais para jogos, já que desabilita boa parte das funções do Swing.

Agora, se você estiver interessado em vender um PDV realmente completo, eu apostaria em vender a solução toda, inclusive com um SO configurado e testado.
Assim é possível também desabilitar a tecla com logo do Windows, por exemplo, e retirar o usuário acesso a recursos como o bash.

Criado 4 de janeiro de 2010
Ultima resposta 21 de mar. de 2012
Respostas 12
Participantes 4