面板2的文本框怎么不显示?还有怎样达到下列编程要求?我已将代码写出希望各位老哥给找找错。

weixin_40583091 2018-01-14 04:24:51
1.java焦点事件到低有什么用,文本框和按钮返回都是Action Event事件,怎样区别?
下面是代码,编程要求在图片上
package javaapplication17;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*
* @author Administrator
*/
public class W2 extends JFrame implements ActionListener, KeyListener,FocusListener{

JTextField t1;
JButton b1;
ActionListener t1t;
JTextField a[];
JPanel p2 ;
JLabel j1;
int m;
String str;
String s1;
W2() {
j1=new JLabel("拼写单词");
t1 = new JTextField(15);
// t1.setText(null);
//t1.addFocusListener(this);

b1 = new JButton("确定");
// b1.addFocusListener(this);
JPanel p1 = new JPanel();
p2 = new JPanel();
p1.add(t1);
p1.add(b1);
p2.add(j1);
add(p1, BorderLayout.NORTH);
add(p2, BorderLayout.CENTER);
setVisible(true);
setDefaultCloseOperation(HIDE_ON_CLOSE);
t1.addActionListener(this);
b1.addActionListener(this);
// p2.removeAll();//p2每次刷新布局
}
public void actionPerformed(ActionEvent e) {
/* if( (JButton)e.getSource()==b1){//文本框1得到监听*/
str = t1.getText();//得到文本框字符串
m = str.length();

getNew(str);
set2(get2(m));//
a[0].addFocusListener(this);
}

public void set2(JTextField[] a) {
p2.removeAll();
//面板2上加文本框
for (int i = 0; i < a.length; i++) {
a[i].setVisible(true);
p2.add(a[i]);
//a[0].addFocusListener(this);
}
}

public void getNew(String s) {//打乱字符串
String s1 = "";
StringBuffer s2 = new StringBuffer(s);
int m = s2.length();
for (int k = 0; k < m; k++) {
int t3 = (int) (Math.random() * s2.length());
char c = s2.charAt(t3);
s1 = s1 + c;//字符串并置
s2 = s2.deleteCharAt(t3);
}
this.s1 = s1;


}

public JTextField[] get2(int n) {//文本框设置
a = new JTextField[n];
for (int i = 0; i < n; i++) {
a[i]=new JTextField(2);
a[i].setText("" + s1.charAt(i));//setText参数类型为string,但charAt返回字符型,并置空的形成string
a[i].setEditable(false);
a[i].addKeyListener(this);
//a[0].addFocusListener(this);

}
return a;
}
public void focusGained(FocusEvent e){

}
public void focusLost(FocusEvent e){

}

public void keyReleased(KeyEvent e) {

}

public void keyTyped(KeyEvent e) {
JTextField c=(JTextField)(e.getSource());
int d=-1;
if((e.getKeyChar()+"").equals("←"+"")){
for(int k=0;k<a.length;k++){
if(a[0]==c){//第一个文本框不能再往左了,判别那个地方获得焦点;
d=k;
break;
}
}
if(d!=0){
String str=a[d].getText();
a[d].setText(a[d-1].getText());
a[d-1].setText(str);
a[d-1].requestFocus();
}

}else if((e.getKeyChar()+"").equals("→"+"")){
for(int k=0;k<a.length;k++){
if(a[0]==c){//第一个文本框不能再往左了,判别那个地方获得焦点;
d=k;
break;
}
}
if(d!=a.length-1){
String str=a[d].getText();
a[d].setText(a[d+1].getText());
a[d+1].setText(str);
a[d+1].requestFocus();
}


}

String s4="";
for(int i=0;i<a.length;i++){
String s5=a[i].getText();
s4=s4+s5;

}
if(s4.equals(s1)){
j1.setText("成功了");
for(int k=0;k<a.length;k++){
a[k].removeKeyListener(this);
a[k].removeFocusListener(this);

}
t1.requestFocus();
t1.setText(null);


}





}

public void keyPressed(KeyEvent e) {

}
}
...全文
304 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHOU西口 2018-01-14
  • 打赏
  • 举报
回复
看看这个: http://blog.csdn.net/u013412772/article/details/52204148

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧