package table;
/*
* SpaltenAuswahlDruck.java
*/
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
import javax.swing.table.*;
public class SpaltenAuswahlDruck extends JFrame {
private JButton btPrint;
private JTable table;
private JToolBar toolbar;
public SpaltenAuswahlDruck() {
toolbar = new JToolBar();
btPrint = new JButton();
table = new JTable();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
btPrint.setText("Print...");
btPrint.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent evt) {
btPrintActionPerformed(evt);
}
});
toolbar.add(btPrint);
getContentPane().add(toolbar, BorderLayout.NORTH);
table.setModel(new DefaultTableModel(
new Object [][] {
{"a1", "a2", "a3", "a4"},
{"b1", "b2", "b3", "b4"},
{"c1", "c2", "c3", "c4"},
{"d1", "d2", "d3", "d4"}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
table.setColumnSelectionAllowed(true);//<---------------------------------------------------
table.setRowSelectionAllowed(false);//<------------------------------------------------------
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
pack();
}
private void btPrintActionPerformed(final ActionEvent evt) {
int cols[] = table.getSelectedColumns();
if(cols.length == 0){
JOptionPane.showMessageDialog(this, "Bitte die zu druckenden Spalte(n) auswählen.");
return ;
}
int rows = table.getRowCount();
//neue JTable erstellen:
JTable printTable = new JTable(rows, cols.length);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols.length; j++) {
printTable.getColumnModel().getColumn(j).setHeaderValue(
table.getColumnModel().getColumn(cols[j]).getHeaderValue());
printTable.setValueAt(table.getValueAt(i, cols[j]), i, j);
}
}
printTable.getTableHeader().setSize(300, 22);
printTable.setSize(300, 300);
//drucken:
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(printTable.getPrintable(JTable.PrintMode.FIT_WIDTH, null,null));
if (job.printDialog()) {
try {
job.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
public static void main(final String args[]) {new SpaltenAuswahlDruck().setVisible(true);}
}