展开全部
效果图
参考代码importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//本类继承自JFrame实现了ActionListener接口
publicclassDemoFrame1extendsJFrameimplementsActionListener{
JPaneljpc;//存放组件的面板
JScrollPanejsp;//滚动面板
JButtonjbAdd,jbRemove,jbReset;//增加,删除按62616964757a686964616fe4b893e5b19e31333365633932钮
intindex=1;//开始的字符
//构造函数
publicDemoFrame1(){
jpc=newJPanel();
jpc.setLayout(newBoxLayout(jpc,BoxLayout.Y_AXIS));//盒子布局.从上到下
jsp=newJScrollPane(jpc,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(jsp);
jbAdd=newJButton("增加");
jbAdd.addActionListener(this);
jbRemove=newJButton("删除");
jbRemove.addActionListener(this);
jbReset=newJButton("重置");
jbReset.addActionListener(this);
JPaneljps=newJPanel();
jps.add(jbAdd);
jps.add(jbRemove);
jps.add(jbReset);
add(jps,BorderLayout.SOUTH);
setTitle("增删组件");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300,220);//大小
setLocationRelativeTo(null);//居中
}
//main函数
publicstaticvoidmain(String[]args){
newDemoFrame1().setVisible(true);//初始化并可见
}
@Override
publicvoidactionPerformed(ActionEvente){
JButtonjb=(JButton)e.getSource();
if(jb==jbAdd){//当点击添加按钮时
jpc.add(newMyJPanel(index));//添加1个自己定义的面板组件
index++;//自加1
myUpdateUI();//刷新界面
}elseif(jb==jbRemove){//当点击删除按钮时
if(jpc.getComponentCount()>0){//得到jpc里的MyJPanel的组件数量
jpc.remove(jpc.getComponentCount()-1);//删除末尾的一个组件,
index-=1;
myUpdateUI();
}
}elseif(jb==jbReset){
for(inti=0;i
MyJPanelmjp=(MyJPanel)jpc.getComponent(i);
//也就是说取值,可以根据文本框所在的位置来取
System.out.println("第"+(i+1)+"个文本框的值是"+mjp.getJTFValue());
mjp.setJTFValue("");//清空,重置
System.out.println("第"+(i+1)+"个文本框的值已清空重置");
}
}
}
//刷新界面函数
privatevoidmyUpdateUI(){
SwingUtilities.updateComponentTreeUI(this);//添加或删除组件后,更新窗口
JScrollBarjsb=jsp.getVerticalScrollBar();//得到垂直滚动条
jsb.setValue(jsb.getMaximum());//把滚动条位置设置到最下面
}
}
//自定义一个JPanle类
classMyJPanelextendsJPanel{
publicJTextFieldjtf;
publicMyJPanel(intindex){
JLabeljl=newJLabel("字符"+index);
jtf=newJTextField(15);
add(jl);
add(jtf);
}
//获取文本框的值
publicStringgetJTFValue(){
returnjtf.getText();
}
//设置文本框的值
publicvoidsetJTFValue(Stringvalue){
jtf.setText(value);
}
}