我想删除DefaultTable的所有行。我发现有两种常见的方法可以在Internet上删除它们,但是在我的情况下它们都不起作用,因为这些方法在DefaultTableModel中不存在。我想知道为什么:S。我使用DefaultTableModel的代码是
DefaultTableModel Table =(DefaultTableModel)Table.getModel();
删除的一种方法是
Table.removeRow(Table.getRowCount()-1);
但是我的DefaultTableModel中不存在此removerow方法。
请帮帮我。
为什么要将简单的事情复杂化而将其删除,则必须反复进行,
if (myTableModel.getRowCount() > 0) {
for (int i = myTableModel.getRowCount() - 1; i > -1; i--) {
myTableModel.removeRow(i);
}
}
代码示例
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.*;
public class RemoveAddRows extends JFrame {
private static final long serialVersionUID = 1L;
private Object[] columnNames = {"Type", "Company", "Shares", "Price"};
private Object[][] data = {
{"Buy", "IBM", new Integer(1000), new Double(80.50)},
{"Sell", "MicroSoft", new Integer(2000), new Double(6.25)},
{"Sell", "Apple", new Integer(3000), new Double(7.35)},
{"Buy", "Nortel", new Integer(4000), new Double(20.00)}
};
private JTable table;
private DefaultTableModel model;
public RemoveAddRows() {
model = new DefaultTableModel(data, columnNames) {
private static final long serialVersionUID = 1L;
@Override
public Class getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
};
table = new JTable(model) {
private static final long serialVersionUID = 1L;
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
int firstRow = 0;
int lastRow = table.getRowCount() - 1;
int width = 0;
if (row == lastRow) {
((JComponent) c).setBackground(Color.red);
} else if (row == firstRow) {
((JComponent) c).setBackground(Color.blue);
} else {
((JComponent) c).setBackground(table.getBackground());
}
/*if (!isRowSelected(row)) {
String type = (String) getModel().getValueAt(row, 0);
c.setBackground("Buy".equals(type) ? Color.GREEN : Color.YELLOW);
}
if (isRowSelected(row) && isColumnSelected(column)) {
((JComponent) c).setBorder(new LineBorder(Color.red));
}*/
return c;
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
JButton button1 = new JButton("Remove all rows");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (model.getRowCount() > 0) {
for (int i = model.getRowCount() - 1; i > -1; i--) {
model.removeRow(i);
}
}
System.out.println("model.getRowCount() --->" + model.getRowCount());
}
});
JButton button2 = new JButton("Add new rows");
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Object[] data0 = {"Buy", "IBM", new Integer(1000), new Double(80.50)};
model.addRow(data0);
Object[] data1 = {"Sell", "MicroSoft", new Integer(2000), new Double(6.25)};
model.addRow(data1);
Object[] data2 = {"Sell", "Apple", new Integer(3000), new Double(7.35)};
model.addRow(data2);
Object[] data3 = {"Buy", "Nortel", new Integer(4000), new Double(20.00)};
model.addRow(data3);
System.out.println("model.getRowCount() --->" + model.getRowCount());
}
});
JPanel southPanel = new JPanel();
southPanel.add(button1);
southPanel.add(button2);
add(southPanel, BorderLayout.SOUTH);
}
public static void main(String[] args) {
RemoveAddRows frame = new RemoveAddRows();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
我的Java GUI中显示了一个表,用户可以通过单击“添加”按钮向其添加行。默认情况下,添加到表中的行中的单元格都是可编辑的,用户可以根据自己的意愿选择每一行/单元格。 我现在想添加从表中删除一行的功能,但似乎找不到使用数据类型执行此操作的正确方法。 我已将以下代码添加到“Remove Row”按钮的操作监听器中: 但是,方法需要类型的参数(我要删除的行的索引号)。如何从中获取“选定行”?似乎没有
问题内容: 我以为那不是难事,但我想用String.replaceAll删除所有空行(或Java中仅包含空白和制表符的行)。 我的正则表达式如下所示: 但这是行不通的。 我环顾四周,但仅发现用于删除空白行而不包含空格或制表符的正则表达式。 问题答案: 试试这个: 请注意,正则表达式匹配空格,制表符或管道字符! 编辑 顺便说一句,正则表达式也可以解决问题。
问题内容: 我需要删除JTable中的所有行。 我已经尝试了以下两种方法: 和 两者都不会删除所有行。有任何想法吗? 问题答案: 以下代码为我工作:
但仍然无法修复。我的目的是当用户在组合框中选择delete选项时,我只想完全删除该行。顺便说一下,removeRow()方法可以在侦听器外部正常工作。下面是代码和说明: 我是不是漏了什么重要的地方?如有任何帮助,我们将不胜感激。
问题内容: import java.util.Scanner; import java.util.regex.*; public class io{ public static void main(String args[]){ Scanner scan = new Scanner(System.in); String c; if((c=scan.nextLine())!=null) { Patt
问题内容: 在Hibernate中删除表中所有行 的最佳方法是什么? 如果我遍历一个集合并称其在我所知范围内没有执行。 如果使用其他选项,则不会影响持久性上下文。 如果没有更好的选择,何时应该使用这些方法? 问题答案: 如果没有什么要层叠的,请使用HQL删除 如果您有层叠,请迭代该集合并分别删除每个集合。 问题出在以下事实:hibernate在内部处理级联,而不是将其留给数据库。因此,发送查询不会