har*_*ter 0 java swing jlabel jtextfield
我有两个标签,一个用于添加,一个用于删除JtextFields.我可以添加jTextField并删除它们,但我的目标是删除标签点击上的文本字段.
下面的图片显示了我的目标,每次点击"+"标签,它下面的文本字段都会被创建.当我单击" - "标签时,同一行上的文本字段将被删除.我应该怎么做才能实现这一目标?
这是我的代码:
lblRemoveTf = new JLabel();
lblRemoveTf.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
for(JTextField myTxt1 : myListOfTxtNum){
eto1 = myTxt1;
}
myListOfTxtNum.remove(eto1);
pnlTxtTxt.remove(pnlTxtTxt.getComponentAt(eto1.getLocation()));
frmGM.revalidate();
frmGM.repaint();
for(JTextField myTxt : myListOfTxtName){
eto = myTxt;
}
myListOfTxtName.remove(eto);
pnlTxtTxt.remove(pnlTxtTxt.getComponentAt(eto.getLocation()));
x-=50;
y-=50;
frmGM.revalidate();
frmGM.repaint();
}
});
lblRemoveTf.setBounds(450,6, 125, 25);
pnlTxtTxt.add(lblRemoveTf);
lblRemoveTf.setIcon(new ImageIcon(GroupManagement.class.getResource("/app/resources/minussmall.png")));
lblAddNewTF = new JLabel();
lblAddNewTF.setBounds(420, 6, 38, 25);
lblAddNewTF.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
count++;
txtStudentName= new JTextField();
txtStudentNumber = new JTextField();
myListOfTxtName.add(txtStudentName);
myListOfTxtNum.add(txtStudentNumber);
txtStudentName.setName("txtStudentname"+count);
txtStudentNumber.setName("txtStudentNumber" + count);
pnlTxtTxt.add(txtStudentName);
pnlTxtTxt.add(txtStudentNumber);
doContainTheListsOfTxt(txtStudentName, txtStudentNumber);
if(count>0){
x+=50;
y+=50;
txtStudentName.setBounds(225,6+y, 182, 27);
txtStudentNumber.setBounds(35, 6+y, 182, 27);
txtStudentName.setName(tempBox+count);
if(pnlTxtTxt.getComponentCount() >9){
pnlTxtTxt.setPreferredSize(new Dimension(450+y,50+y));
pnlTxtTxt.add(txtStudName);
pnlTxtTxt.add(txtStudentNumber);
frmGM.repaint();
scrpTxtTxt.revalidate();
}
}
frmGM.repaint();
}
});
lblAddNewTF.setIcon(new ImageIcon(GroupManagement.class.getResource("/app/resources/plussmall.png")));
pnlTxtTxt.add(lblAddNewTF);
Run Code Online (Sandbox Code Playgroud)
这是我想要实现的照片

不要使用null布局和setBounds().您可以使用垂直BoxLayout添加行的行.
创建一个表示单行的类.因此,您将使用带有两个文本字段和两个按钮的JPanel.
每次添加一行面板时,都会将面板添加到ArrayList,以便跟踪每一行.
单击" - "按钮时,可以使用getParent()方法查找按钮所属的面板.然后,您可以使用Container.remove(...)方法删除该行.
当您单击"+"按钮时,您将获得父面板.然后,您可以搜索ArrayList以获取当前面板的索引.然后,您可以使用Container.add(...)方法将面板添加到Container,并将面板添加到ArrayList.
此外,您可以使用JButton,而不是使用JLabel作为按钮.您可以使用该setBorderPainted(false)方法,按钮看起来像一个标签.
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |