文本输入框文本输入框


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

class Outer implements ActionListener {
JTextField field;
JFrame frame;
inner inner2;

public void go(){
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(80,80,80,80);
 inner2 = new inner();
frame.getContentPane().add(BorderLayout.CENTER,inner2);
frame.setVisible(true);
field = new JTextField("Your name");
frame.getContentPane().add(BorderLayout.NORTH,field);
field.addActionListener(this);
field.selectAll();
field.requestFocus();
System.out.println(field.getText());
}

public static void main (String[] args) {
Outer out = new Outer();
out.go();
}

public void actionPerformed(ActionEvent ev){
inner2.repaint();
}

class inner extends JPanel{

public void paintComponent(Graphics g){

int red = (int)(Math.random()*255);
int green = (int)(Math.random()*255);
int blue = (int)(Math.random()*255);
Color color = new Color(red,blue,green);
g.setColor(color);
g.fillRect(200,200,70,70);
}
}
}

img

Your name
our name
Your name
our name

enter field 之后 接口执行inner2.repaint() 重绘 inner2,但是结果如图片所示,有两种颜色,最开始的inner2的颜色留下了一条,一直在,这是为什么啊,还有Textfield回车之后下面有个一模一样的框出现是什么?

搞出来了,inner2.repaint() 换成frame.repaint() 就好了

但是为什么,我还是没搞清楚

new JTextField(20) JTextField 的这个构造函数里的20是字宽,不是像素,这个字宽有什么意义?哪里做了限制或者要求?哪位大哥回答一下这个,给本题采纳!