Tenho estudado java bastante, e agora comecei a colocar em prática, e não parece, mas às vezes nos atropelamos com situações simples, mas começar é começar. Fiz esse código e inserir um no meio para detectar a tecla Enter(Key = 13). Essas linhas eu copiei das dicas do osmar silva. O codigo em comentario e em vermelho é que ta dando erro. Podem me dar uma ajuda?
import java.awt.;
import java.awt.event.;
import javax.swing.*;
Container c = getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));
img = new ImageIcon("C:/Lixo/MSN.GIF");
// Cria os componentes
texto = new JTextField(10);
novo = new JButton("Novo");
fecha = new JButton("Fechar",img);
textArea = new JTextArea();
[color=red]/* public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ENTER)
textArea.setText(“Você pressionou Enter”);
else
textArea.setText(“Você não pressionou Enter”);
}*/[/color]
novo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,
“Fui clicado”);
}
}
);
fecha.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
c.add(novo);
c.add(fecha);
// alinha o texto à direita
texto.setHorizontalAlignment(JTextField.RIGHT);
// para alinhar à esquerda use JTextField.LEFT
// para alinhar ao centro use JTextField.CENTER
// Adiciona o JTextField à janela
c.add(texto);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}[/code]
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ENTER)
textArea.setText("Você pressionou Enter");
else
textArea.setText("Você não pressionou Enter");
}
Se for, a primeira coisa que eu recomendo é você não utilizar “==”, e sim .equals()
Tente colocar parênteses depois do if, e fechar antes do else, depois abrir no else e fechar no final…
O problema era: como o ViniGodoy mostrou, você deve adicionar um KeyListener (por isso do addKeyListener) na janela.
A classe KeyAdapter é uma classe que implementa KetListener, porém deixando todos os métodos vazios (os métodos que são descritos na interface, nessa implementação não fazem coisa alguma).
Por isso você cria um ‘new KeyAdapter’, sobreescrevendo o método que te interessa (no caso, ketPressed). Dentro dele, você altera o texto de acordo com a condição (no exemplo acima, usando um ‘if ternário’).
public class Estudos extends JFrame{
JTextField texto;
JButton novo;
JButton fecha;
JTextArea textArea;
ImageIcon img;
public Estudos() {
super(“Estudos Swing”);
Container c = getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));
img = new ImageIcon("C:/Lixo/MSN.GIF");
// Cria os componentes
texto = new JTextField(10);
novo = new JButton("Novo");
fecha = new JButton("Fechar",img);
textArea = new JTextArea(5,20);
/* public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ENTER)
textArea.setText(“Você pressionou Enter”);
else
textArea.setText(“Você não pressionou Enter”);
} */
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
textArea.setText(e.getKeyCode() == KeyEvent.VK_ENTER ?
"Você pressionou Enter" : " Você não pressionou enter");
}
}
novo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,
"Fui clicado");
}
}
);
fecha.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
c.add(novo);
c.add(fecha);
c.add(textArea);
// alinha o texto à direita
texto.setHorizontalAlignment(JTextField.RIGHT);
// para alinhar à esquerda use JTextField.LEFT
// para alinhar ao centro use JTextField.CENTER
// Adiciona o JTextField à janela
c.add(texto);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}[/code]