大家好,我的疑问是关于这个代码的,在 Frame 中添加了 Panel,然后设置为 cardlayout 布局,然后无论是用 first 这个 panle 还是用 first 中的 firstlbl 这空间侦听鼠标按键都没有反应,请教这是为什么呢,为什么没有响应按键事件呢
21:27:53 你已加入群,开始聊天吧
Q群管家 21:27:53
@xpro 欢迎公开讨论,勿私加好友骚扰他人。提问请一次性详尽描述所处情况。勿问“在不在,有没有人”,
——来自群管理员(2777184456)的编辑
xpro 21:28:19
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class HelloWorld
{
public static void main(String[] args) {
JFrame main = new JFrame();
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setTitle("key puzzle");
main.setBounds(100, 0, 400, 400);
main.setVisible(true);
JPanel top = new JPanel();
Button file = new Button("file");
top.add(file);
CardLayout cl = new CardLayout();
JPanel bottom = new JPanel(cl);
JPanel first = new JPanel();
JLabel frstLbl = new JLabel("first");
frstLbl.setFocusable(true);
frstLbl.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == 37)
{
cl.show(bottom, "first");
}
else if (e.getKeyCode() == 39)
{
cl.show(bottom, "snd");
}
}
});
JPanel snd = new JPanel();
JLabel sndLbl = new JLabel("snd");
snd.add(sndLbl);
bottom.add(first, "first");
bottom.add(snd, "snd");
cl.show(bottom, "snd");
// JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, top, bottom);
main.getContentPane().add(bottom);
}
}
xpro 21:29:41
大家好,我的疑问是关于这个代码的,在 Frame 中添加了 Panel,然后设置为 cardlayout 布局,然后无论是用 first 这个 panle 还是用 first 中的 firstlbl 这空间侦听鼠标按键都没有反应,请教这是为什么呢,为什么没有响应按键事件呢
xpro 21:30:13
谢谢大家
xpro 21:30:40
可有偿,谢谢
hjl 21:34:59
你要对Frame进行监听才行啊
xpro 21:38:44
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Demo2
{
public static void main(String[] args) {
JFrame main = new JFrame();
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setBounds(1000, 0, 400, 400);
main.setVisible(true);
JPanel panel = new JPanel();
JLabel msg = new JLabel("hello world");
msg.setFocusable(true);
msg.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("hello world msg");
}
});
panel.add(msg);
main.getContentPane().add(panel);
}
}
但是下面这个就可以
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Demo2
{
public static void main(String[] args) {
JFrame main = new JFrame();
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setBounds(1000, 0, 400, 400);
main.setVisible(true);
JPanel panel = new JPanel();
JLabel msg = new JLabel("hello world");
msg.setFocusable(true);
msg.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("hello world msg");
}
});
panel.add(msg);
main.getContentPane().add(panel);
}
}