【发布时间】:2015-03-01 15:59:22
【问题描述】:
我是 Swing 新手,在这里寻求帮助。我需要在 jTable 中显示来自 .xls 文件的数据。以下是我从here 遵循的代码:-
jbClick.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
jChooser.showOpenDialog(null);
File file = jChooser.getSelectedFile();
if(!file.getName().endsWith("xls")){
JOptionPane.showMessageDialog(null, "Please select only Excel file.", "Error",JOptionPane.ERROR_MESSAGE);
}
else {
fillData(file);
model = new DefaultTableModel(data, headers);
tableWidth = model.getColumnCount() * 150;
tableHeight = model.getRowCount() * 25;
table.setPreferredSize(new Dimension( tableWidth, tableHeight));
table.setModel(model);
jbClick.setVisible(false);
jbText.setVisible(true);
}
}
});
JPanel chooserPanel = new JPanel();
JPanel filterPanlel = new JPanel();
//filterPanlel.add(jbText,"OLa");
final Color alternate = new Color(186,246,244);
table = new JTable();
table.setAutoCreateRowSorter(true);
model = new DefaultTableModel(data, headers);
table.setModel(model);
table.setBackground(alternate);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setEnabled(false);
table.setRowHeight(25);
table.setRowMargin(4);
tableWidth = model.getColumnCount() * 200;
tableHeight = model.getRowCount() * 25;
table.setPreferredSize(new Dimension( tableWidth, tableHeight));
scroll = new JScrollPane(table);
scroll.setBackground(alternate);
scroll.setPreferredSize(new Dimension(500, 500));
scroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(buttonPanel, BorderLayout.NORTH);
getContentPane().add(scroll, BorderLayout.CENTER);
//setSize(600, 600);
setResizable(true);
setExtendedState(JFrame.MAXIMIZED_BOTH);
//setUndecorated(true);
setVisible(true);
}
/** * Fill JTable with Excel file data. * * @param file * file :contains xls file to display in jTable */
@SuppressWarnings({ "unchecked", "rawtypes" })
void fillData(File file) {
Workbook workbook = null;
try {
try {
workbook = Workbook.getWorkbook(file);
}
catch (IOException ex) {
Logger.getLogger( excelTojTable.class. getName()).log(Level.SEVERE, null, ex);
}
Sheet sheet = workbook.getSheet(0);
headers.clear();
for (int i = 0; i < sheet.getColumns(); i++)
{
Cell cell1 = sheet.getCell(i, 0);
headers.add(cell1.getContents());
}
data.clear();
for (int j = 1; j < sheet.getRows(); j++)
{
Vector d = new Vector();
for (int i = 0; i < sheet.getColumns(); i++)
{
Cell cell = sheet.getCell(i, j);
d.add(cell.getContents());
}
d.add("\n");
data.add(d);
}
}
catch (BiffException e) {
e.printStackTrace();
}
}
问题:- 现在我需要在表格的每一行前面添加一个可编辑的复选框。
请帮忙。
【问题讨论】:
-
我删除了 iText 标签,因为我没有看到任何与 PDF 相关的内容。此外:
PdfGraphics2D(可以将 Swing 对象渲染为 PDF 的 iText 类)不支持交互式表单字段。 -
I need to add a editable checkbox in-front of each row in the table.我猜这个问题是关于在 Excel 文件中找不到的表中添加一个额外的列。在创建“header”和“d”向量的循环之前,您需要添加布尔信息。因此,对于标题,您可能会这样做:header.add("Select");和每一行:d.add( Boolean.FALSE );。然后,您需要通过使用table.getDefaultRenderer(Boolean.Class)更新TableColumnModel的TableColumn来为表的第一列设置默认渲染器 -
@BrunoLowagie:谢谢……确实不需要 iText 标签
-
@camickr :- 感谢您的评论...但是请您提供代码 sn-p !!!
-
@camickr :我的表格中有一个新列,但它不是一个复选框......但它的所有条目都是假的......我是新来的摇摆......所以请帮助
标签: java excel swing jtable jcheckbox