题目:编写程序:自定义一个类,继承Frame,创建该类对象,并在其上添加1个标签,标签上初始文字为“A”,当按下键盘的向右方向键时,其文字变为“B”,以此类推,当按下左方向键时,则分别变为当前字母的前一字母。
代码:
- Java code
import java.awt.*;import java.awt.event.*;public class Java extends Frame implements KeyListener{ static Label l= new Label("A"); public static void main(String args[]) { Java j = new Java(); l.addKeyListener(j); j.setSize(200,200); j.add(l); j.setVisible(true); } public void keyPressed(KeyEvent e) { if (e.getKeyCode()==e.VK_LEFT) { l.setText("B"); } if(e.getKeyCode()==e.VK_RIGHT) { l.setText("A"); } } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { }}
哪里出错了?
------解决方案--------------------
static Label l= new Label("A");
改为
static JTextField l= new JTextField("A");
Label 不能获取焦点,没有key事件
------解决方案--------------------
看着代码是没有问题的,等大神出现
------解决方案--------------------
你添加的侦听有问题,对一个可以接受输入的组件添加侦听,下面已经实现了左右键控制标签显示A B,剩下业务逻辑你自己实现吧
- Java code
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Java extends JFrame implements KeyListener{ static JLabel l= new JLabel("A"); static JTextField tf=new JTextField(15); public static void main(String args[]) { Java j = new Java(); j.setSize(200,200); j.getContentPane().setLayout(new FlowLayout()); j.getContentPane().add(l); j.getContentPane().add(tf); tf.addKeyListener(j); j.setVisible(true); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void keyPressed(KeyEvent e){ if (e.getKeyCode()==KeyEvent.VK_LEFT) { System.out.println("-------"); l.setText("B"); } if(e.getKeyCode()==KeyEvent.VK_RIGHT) { l.setText("A"); } } public void keyTyped(KeyEvent e) {// System.out.println("-------"); } public void keyReleased(KeyEvent e) {// System.out.println("-------"); }}
------解决方案--------------------
------解决方案--------------------
把label放到JPanel里,给JPanel添加事件
------解决方案--------------------
------解决方案--------------------
l.setFocusable(true);
------解决方案--------------------
添加一个键盘监听事件,由键盘触发时,,,,,对Label做响应.设置植!!!
------解决方案--------------------
大牛们,你们把需求理解错误了。楼主应该是想要按右键,当前字符+1,比如A变成B,B变成C。按左键则少1。
- Java code
public void keyPressed(KeyEvent e){ if (e.getKeyCode()==KeyEvent.VK_LEFT) { System.out.println("-------"); String txt = l.getText(); char c = txt.charAt(0); if(!txt.equals("A")) l.setText(String.valueOf((char)(c-1))); } if(e.getKeyCode()==KeyEvent.VK_RIGHT) { String txt = l.getText(); char c = txt.charAt(0); if(!txt.equals("Z")) l.setText(String.valueOf((char)(c+1))); } }