import java.awt.Color;
import java.awt.event.KeyEvent;
import javax.swing.UIManager;
@SuppressWarnings("serial")
public class painelFrame extends javax.swing.JFrame {
public painelFrame(){
initComponents();
this.setLocationRelativeTo(null);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e){
e.printStackTrace();
}
getContentPane().setBackground(Color.BLACK);
}
private void painelFrameKeyPressed(java.awt.event.KeyEvent evt){
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE){
dispose();
}
}
private void initComponents() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
javax.swing.GroupLayout frame = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(frame);
frame.setHorizontalGroup(frame.createParallelGroup
(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 700, Short.MAX_VALUE));
frame.setVerticalGroup(frame.createParallelGroup
(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 700, Short.MAX_VALUE));
pack();
}
public static void main(String [] args){
new painelFrame().setVisible(true);
}
}
está acusando de erro na linha do eventro KeyPressed. o que tem de errado???
obrigado pela atenção!
Olá amigo, tudo blz?
Então cara, compilei o código que tu postou e não deu nenhum erro de sintaxe.
Na verdade o que há de errado é que seu método painelFrameKeyPressed não é chamado em momento algum.
Para vc criar um evento de teclado, primeiro tem que se adicionar um listener a ele. Tenta fazer assim:
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.UIManager;
@SuppressWarnings("serial")
public class painelFrame extends javax.swing.JFrame {
public painelFrame() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
initComponents();
this.setLocationRelativeTo(null);
}
private void painelFrameKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
dispose();
}
}
private void initComponents() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
javax.swing.GroupLayout frame = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(frame);
frame.setHorizontalGroup(frame.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGap(0, 700, Short.MAX_VALUE));
frame.setVerticalGroup(frame.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGap(0, 700, Short.MAX_VALUE));
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
painelFrameKeyPressed(e);
}
});
pack();
}
public static void main(String[] args) {
new painelFrame().setVisible(true);
}
}
Outra recomendação é alterar o look and feel ANTES da chamada do método initComponents, valew?
Falow cara, espero ter ajudado.
=)
[quote=kleberkruger]Olá amigo, tudo blz?
Então cara, compilei o código que tu postou e não deu nenhum erro de sintaxe.
Na verdade o que há de errado é que seu método painelFrameKeyPressed não é chamado em momento algum.
Para vc criar um evento de teclado, primeiro tem que se adicionar um listener a ele. Tenta fazer assim:
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.UIManager;
@SuppressWarnings("serial")
public class painelFrame extends javax.swing.JFrame {
public painelFrame() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
initComponents();
this.setLocationRelativeTo(null);
}
private void painelFrameKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
dispose();
}
}
private void initComponents() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
javax.swing.GroupLayout frame = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(frame);
frame.setHorizontalGroup(frame.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGap(0, 700, Short.MAX_VALUE));
frame.setVerticalGroup(frame.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGap(0, 700, Short.MAX_VALUE));
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
painelFrameKeyPressed(e);
}
});
pack();
}
public static void main(String[] args) {
new painelFrame().setVisible(true);
}
}
Outra recomendação é alterar o look and feel ANTES da chamada do método initComponents, valew?
Falow cara, espero ter ajudado.
=)[/quote]
ohhh, vlw cara, agora foi, e obrigado pela recomendação, xD, ainda sou novato!!!
qual é o motivo que é recomendado mudar o look and feel antes do initComponents();???
Na verdade esta recomendação é minha em particular. Num sei se o Java tem algo contra isso, mas eu prefiro alterar o look and feel antes, assim os componentes já são criados “de cara nova”. Quando vc cria os componentes e em seguida altera o look and feel, vc tem que dar um:
SwingUtilities.updateComponentTreeUI(frame);
este método atualiza/repinta o frame e faz com que ele ganhe a “cara nova”.
Experimenta fazer uns testes, chame primeiro o método initComponents() e em seguida, altere o look and feel
Vc vai perceber que a aplicação ainda ficará com a cara do tema antigo.
Depois repita o mesmo teste adicionando na linha abaixo do método UIManager.setLookAndFeel() o método que eu citei acima.
Repare que aí sim ele vai repintar o frame com o novo look and feel
try {
UIManager.setLookAndFeel(new WindowsLookAndFeel());
SwingUtilities.updateComponentTreeUI(this);
} catch (UnsupportedLookAndFeelException ex) {
System.out.println("Xii! deu pau");
}
opa, fiz o teste, meu deu pra perceber a diferença, xD, vlw pela dica!!!
Já vi vários livros de Swing que também não recomendam.
Entretanto, o tutorial da Sun explica com o uso do updateTreeUI:
http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html