复制 Swing JTable 选定行的最佳算法
Best algorithm for copying selected rows of a Swing JTable
我正在尝试使用 Jython 复制 JTable Swing 的选定行。复制事件发生在点击时,所以起点是选定的行,最终目标是将它们复制到它们下面。
我试过了,但我想出了一个“极其”繁琐的算法,它并没有完全按照我的要求进行(复制选定的那些,而不是下面......!)
def copySelectedLine(self, e):
model = self.table.getModel()
dataVector = model.getDataVector()
rowsToCopy = self.table.getSelectedRows()
for adder, r in enumerate(rowsToCopy):
r = r+adder
newDataVector = dataVector[:r] + [([model.getValueAt(r, c) for c in xrange(3)] + [
'', '', '', '', '', ''])] + dataVector[r:] # personal concatenation
model.setRowCount(0)
for nr in newDataVector:
model.addRow(nr)
我也在Java中接受了一个建议。
提前致谢!
简单是最难的事情引述。马西米利亚诺·阿莱格里
def copySelectedLine(self, e):
model = self.table.getModel()
rowsToCopy = self.table.getSelectedRows()
for adder, r in enumerate(rowsToCopy):
i = r+adder+1
model.insertRow(i, [model.getValueAt(r, c) for c in xrange(3)])
PS: 奇怪我是第一个回答的...
我正在尝试使用 Jython 复制 JTable Swing 的选定行。复制事件发生在点击时,所以起点是选定的行,最终目标是将它们复制到它们下面。
我试过了,但我想出了一个“极其”繁琐的算法,它并没有完全按照我的要求进行(复制选定的那些,而不是下面......!)
def copySelectedLine(self, e):
model = self.table.getModel()
dataVector = model.getDataVector()
rowsToCopy = self.table.getSelectedRows()
for adder, r in enumerate(rowsToCopy):
r = r+adder
newDataVector = dataVector[:r] + [([model.getValueAt(r, c) for c in xrange(3)] + [
'', '', '', '', '', ''])] + dataVector[r:] # personal concatenation
model.setRowCount(0)
for nr in newDataVector:
model.addRow(nr)
我也在Java中接受了一个建议。
提前致谢!
简单是最难的事情引述。马西米利亚诺·阿莱格里
def copySelectedLine(self, e):
model = self.table.getModel()
rowsToCopy = self.table.getSelectedRows()
for adder, r in enumerate(rowsToCopy):
i = r+adder+1
model.insertRow(i, [model.getValueAt(r, c) for c in xrange(3)])
PS: 奇怪我是第一个回答的...