输入长度和范围,单击“生成”按钮生成随机数序列,如图6-32所示,使用文本行数组分别存储输入数据和结果数据。单击“查找重复值”按钮,将查找到的多个重复值以同一种颜色显示。(长度为几就生成几个文本框)
这题,我的思路是准备搞一个边布局的窗口,北面和中间各一个面板,北面的用流布局,然后把上面那几个组件(两个标签两个文本框,两个按钮)加上去。这一步我已经搞定了。然后中间的面板用网格布局。我是想在点击那个生成按钮的时候,将一个文本框数组添加到中间的面板中。(因为改变上面那个长度文本框里的数字,文本框数组的元素数量会变,所以不能在上面构造方法里写)我是在实现按钮监听器接口的代码里写的,但是发现那个文本框数组根本加不到那个面板上
(代码中我已实现的两个面板的添加以及上部面板组件的添加,我碰到的问题,文本框无法添加至第二个面板中。
)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class RandomFrame extends JFrame implements ActionListener
{
private JTextField TextField_1,TextField_2;
private JButton Button_1,Button_2;
JTextField[] field;
public RandomFrame()
{
super("随机数序列,查找重复值");
this.setSize(400,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel_1 = new JPanel(new FlowLayout());
JLabel Label_1 = new JLabel("长度");
TextField_1 = new JTextField("",4);
JLabel Label_2 = new JLabel("范围");
TextField_2 = new JTextField("",4);
Button_1 = new JButton("生成");
this.Button_1.addActionListener(this);
Button_2 = new JButton("查找重复值");
this.Button_2.addActionListener(this);
panel_1.add(Label_1);
panel_1.add(TextField_1);
panel_1.add(Label_2);
panel_1.add(TextField_2);
panel_1.add(Button_1);
panel_1.add(Button_2);
this.getContentPane().add(panel_1,"North");
JPanel panel_2 = new JPanel(new GridLayout(4,5 ));
this.getContentPane().add(panel_2,"Center");
this.setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == this.Button_1)
{
int a = Integer.valueOf(TextField_1.getText());
field = new JTextField[a];
for (int i = 0;i < a;i++)
{
field[i] = new JTextField("",4);
}
for (int i = 0;i < a;i++)
{
panel_2.add(field[i]);//此处报错
}
}
}
public static void main(String[] args) {
new RandomFrame();
}
}