gpt4 book ai didi

java - 在 JTable 中添加第二行时删除第一行

转载 作者:行者123 更新时间:2023-12-01 22:20:38 25 4
gpt4 key购买 nike

我有一个 JtextField 和 Jcombobox。每当从文本字段和组合框中选择值并单击添加按钮时,值应该出现在表中。第一行已正确添加。当我尝试添加第二行时,第一行值被替换为新值,但不添加第二行。每次单击“添加”按钮时,都应将值添加到表中,而不删除旧值,并且单击“删除”时,我应该能够删除该行..我该如何实现这一点。这是我的代码

public static void main(String[] args) 
{
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
try
{
ModelSelection modelselection=new ModelSelection();
modelselection.setVisible(true);
}
catch(Exception e)
{
e.printStackTrace();
}
}
});

}

public ModelSelection() throws TooManyListenersException
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setBounds(240, 30, 906, 658);
contentPane =new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
Image im=new ImageIcon(this.getClass().getResource("/sprinkle.jpg")).getImage();
setContentPane(new JLabel(new ImageIcon(im)));
contentPane.setLayout(null);

modelSelection=new JLabel("MODULE SELECTION");
modelSelection.setBounds(240, 20, 450,40);
modelSelection.setFont(new Font("arial",Font.BOLD,40));
Color modellabel = new Color(16,180,205);
modelSelection.setForeground(modellabel);
add(modelSelection);


lab=new JLabel("Choose S-NET device and S-NET ID");
lab.setBounds(30, 75, 500,40);
lab.setFont(new Font("arial",Font.BOLD,25));
Color label = new Color(176,224,230);
lab.setForeground(label);
add(lab);

choice=new JLabel("S-Net Device -");
choice.setBounds(30, 145, 200, 20);
choice.setFont(new Font("arial",Font.BOLD,25));
Color choicecolor = new Color(135,206,250);
choice.setForeground(choicecolor);
add(choice);

String devicesnames[]={"SW-LE-4","SD-LD-4","SR-RL-8","SD-FL-4","SD-FN-2"};
mod=new JComboBox(devicesnames);
mod.setBounds(260,140,230,35);
Color modcolor = new Color(173,216,230);
mod.setBackground(modcolor);
mod.setFont(new Font("arial",Font.BOLD,17));
Color border=new Color(30,144,255);
mod.setBorder(new LineBorder(border, 2));
mod.setSelectedIndex(-1);
add(mod);

snet=new JLabel("S-Net ID -");
snet.setBounds(30, 200, 200, 20);
snet.setFont(new Font("arial",Font.BOLD,25));
Color snetcolor = new Color(135,206,250);
snet.setForeground(snetcolor);
add(snet);

id=new JTextField("1");
id.setBounds(260,200,230,35);
id.setEditable(true);
Color idcolor = new Color(173,216,230);
id.setBackground(idcolor);
Color idborder=new Color(30,144,255);
id.setBorder(new LineBorder(idborder, 3));
id.setFont(new Font("arial",Font.BOLD,20));
add(id);

validityid=new JLabel("**S-Net ID(1-230) only");
validityid.setBounds(500, 210, 200, 20);
validityid.setFont(new Font("arial",Font.PLAIN,18));
Color validityidcolor = new Color(255,99,71);
validityid.setForeground(validityidcolor);
add(validityid);


add=new JButton("ADD");
add.setBounds(180,260, 80, 35);
Color addbackground=new Color(0,0,255);
add.setBackground(addbackground);
Color border1=new Color(30,144,255);
add.setBorder(new LineBorder(border1,3));
add.setFont(new Font("arial",Font.BOLD,18));
add.setForeground(Color.WHITE);
add.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if(mod.getSelectedItem()!=null && id.getText()!=null)
{
System.out.println("correct");
simpleset();
}
else
{
JOptionPane optionPane = new JOptionPane("Fields cannot be empty", JOptionPane.ERROR_MESSAGE);
JDialog dialog = optionPane.createDialog("FAILURE");
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
}
}
});
add(add);

devices=new JLabel("Selected S-NET device and S-NET ID");
devices.setBounds(30, 310, 450,40);
devices.setFont(new Font("arial",Font.BOLD,25));
Color deviceslabel = new Color(176,224,230);
devices.setForeground(deviceslabel);
add(devices);


String columnNames[] = { "S-NET Device","S-NET ID"};
String dataValues[][] =
{
{ "12", "234", },
{ "-123", "43", },
{ "93", "89.2", },
{ "12", "234", },
{ "-123", "43", },


};

t=new JTable();
JScrollPane s=new JScrollPane(t);
s.setBounds(30, 360, 400, 200);
Color sbcolor = new Color(128,200,242);
t.setBackground(sbcolor);
Color headercolor = new Color(152,252,252);
t.getTableHeader().setBackground(headercolor);
Color headerborder=new Color(0,0,255);
t.getTableHeader().setBorder(new LineBorder(headerborder,2));
t.getTableHeader().setFont(new Font("arial", Font.BOLD, 18));
t.setRowHeight(30);
t.setFillsViewportHeight(true);
t.setShowVerticalLines(true);
t.setShowGrid(true);
Color gridcolor=new Color(0,0,0);
t.setGridColor(gridcolor);
t.setFont(new Font("arial", Font.BOLD, 17));
Color scrollborder=new Color(15,132,210);
s.setBorder(new LineBorder(scrollborder, 4));
s.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
add(s);


configure=new JButton("CONFIGURE");
configure.setBounds(80,575, 120, 35);
Color configureborder=new Color(30,144,255);
configure.setBorder(new LineBorder(configureborder, 3));
Color configurebackground=new Color(50,205,50);
configure.setBackground(configurebackground);
configure.setFont(new Font("arial",Font.BOLD,15));
configure.setForeground(Color.WHITE);
add(configure);
delete=new JButton("DELETE");
delete.setBounds(230,575, 120, 35);
Color deleteborder=new Color(30,144,255);
delete.setBorder(new LineBorder(deleteborder, 3));
Color deletebackground=new Color(220,20,60);
delete.setBackground(deletebackground);
delete.setFont(new Font("arial",Font.BOLD,15));
delete.setForeground(Color.WHITE);
add(delete);



}

protected void simpleset()
{
// TODO Auto-generated method stub
String data=mod.getSelectedItem().toString();
System.out.println(data);

String num=id.getText();


String columnNames[] = { "S-NET Device","S-NET ID"};
Object[][] row={{data,num}};
for(int i=0;i<row.length;i++)
{
System.out.println(row[i]);
}

DefaultTableModel dtm = new DefaultTableModel(0, 0);
dtm.setColumnIdentifiers(columnNames);

List<String> list = new ArrayList<String>();

list.add(num);
list.add(data);

dtm.addRow(list.toArray());

t.setModel(dtm);
DefaultTableCellRenderer rightRenderer=new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(SwingConstants.CENTER);
t.getColumnModel().getColumn(0).setCellRenderer(rightRenderer);
t.getColumnModel().getColumn(1).setCellRenderer(rightRenderer);



}

最佳答案

您的 simpleset() 在每次调用时重新创建 TableModel。

DefaultTableModel dtm = new DefaultTableModel(0, 0);
...
t.setModel(dtm);

只需创建一次,存储为字段(或从 JTable 实例获取)并使用 addRow() 或 insertRow() 方法插入新数据。

关于java - 在 JTable 中添加第二行时删除第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com