健盘事件中提个问??
发表在Java视频课程答疑 2019-03-09
是否精华
版块置顶:

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.ArrayList;

import java.util.List;

import javax.swing.*;



public class keylistener extends JFrame{


public keylistener() {

setTitle("健盘事件");

setBounds(100,100,600,200);

Container c = getContentPane();

JTextField tf = new JTextField();

c.setLayout(new BorderLayout());

c.add(tf, BorderLayout.NORTH);

JPanel pp= new JPanel();

pp.setLayout(new FlowLayout(1,10,3));

JButton a1 = new JButton("A");

JButton b1 = new JButton("B");

JButton c1 = new JButton("C");

JButton d1 = new JButton("D");

JButton e1 = new JButton("E");

JButton f1 = new JButton("F");

JButton g1 = new JButton("G");

JButton h1 = new JButton("H");

JButton i1 = new JButton("I");

JButton j1 = new JButton("J");

JButton k1 = new JButton("K");

JButton l1 = new JButton("L");

JButton m1 = new JButton("M");

JButton n1 = new JButton("N");

JButton o1 = new JButton("O");

JButton p1 = new JButton("P");

JButton q1 = new JButton("Q");

JButton r1 = new JButton("R");

JButton s1 = new JButton("S");

JButton t1 = new JButton("T");

JButton u1 = new JButton("U");

JButton v1 = new JButton("V");

JButton w1 = new JButton("W");

JButton x1 = new JButton("X");

JButton y1 = new JButton("Y");

JButton z1 = new JButton("Z");

pp.add(a1);

pp.add(b1);

pp.add(c1);

pp.add(d1);

pp.add(e1);

pp.add(f1);

pp.add(g1);

pp.add(h1);

pp.add(i1);

pp.add(j1);

pp.add(k1);

pp.add(l1);

pp.add(m1);

pp.add(n1);

pp.add(o1);

pp.add(p1);

pp.add(q1);

pp.add(r1);

pp.add(s1);

pp.add(t1);

pp.add(u1);

pp.add(v1);

pp.add(w1);

pp.add(x1);

pp.add(y1);

pp.add(z1);

c.add(pp, BorderLayout.CENTER);

List<JButton> list = new ArrayList<>();//创建List集合

Component item[] = pp.getComponents();//获取面板中所有组件

for (Component d:item){

if(d instanceof JButton){//判断组件是否是按钮

list.add((JButton)d);//添加到集合中

}

}


tf.addKeyListener(new KeyListener() {

public void keyTyped(KeyEvent e) {

}

public void keyReleased(KeyEvent e) {

char ch = e.getKeyChar();//获取按下的健的字符

for (JButton btn:list){

String keytext = btn.getText();//获取按钮的字符内容

if(keytext.equalsIgnoreCase(String.valueOf(ch))){//比较按下的健与按钮的内容是否一

btn.setBackground(Color.white);

}

}

}

public void keyPressed(KeyEvent e) {

char ch = e.getKeyChar();

for (JButton btn:list){

String keytext = btn.getText();

if(keytext.equalsIgnoreCase(String.valueOf(ch))){

btn.setBackground(Color.green);

}

}

}

});

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

}


public static void main(String[] args) {

new keylistener();

}


}

问题是Component item[] = pp.getComponents();这句中,之前和视频中一样用获取容器中所有组件的方法,即改成了c.getComponents().运行按健没有反应了,!!,改成面板的pp才变色,想不通了。请教一下。

2019-03-10 00:19:16编辑
分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-03-11
沙发

没看懂你在问啥,c和pp根本就不是同一个容器,怎么可能会一样

imko
学分:985 LV7
2019-03-11
板凳

根号申 发表于2019-03-11 11:39

没看懂你在问啥,c和pp根本就不是同一个容器,怎么可能会一样

呵呵。看花眼了,视频中contentPane这个面板,还以为是getContenPane.了。看来还是要细心。

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照