Ciao a tutti come sempre.
Nel mio studio di java(tuttora purtroppo sto' lavorando in c#)
mi sono fermato un attimo a questo termine(renderer),l'ho visto in alcuni esempi trovati su internet ad es il successivo:
public class PushableHeaderExample extends JPanel {
public PushableHeaderExample(){
setLayout(new BorderLayout());
String[] headerStr = {"Push","me","here"};
DefaultTableModel dm = new DefaultTableModel(headerStr, 4);
JTable table = new JTable(dm);
// ButtonHeaderRenderer renderer = new ButtonHeaderRenderer();
ButtonHeaderRenderer renderer=new ButtonHeaderRenderer();
TableColumnModel model = table.getColumnModel();
int n = headerStr.length;
for (int i=0;i<n;i++) {
model.getColumn(i).setHeaderRenderer (renderer);
}
JTableHeader header = table.getTableHeader();
// header.addMouseListener(new HeaderListener(header,renderer));
JScrollPane pane = new JScrollPane(table);
add(pane, BorderLayout.CENTER);
}
}
class HeaderListener extends MouseAdapter {
JTableHeader header;
ButtonHeaderRenderer renderer;
HeaderListener(JTableHeader header,ButtonHeaderRenderer renderer) {
this.header = header;
this.renderer = renderer;
}
public void mousePressed(MouseEvent e) {
int col = header.columnAtPoint(e.getPoint());
renderer.setPressedColumn(col);
header.repaint();
System.out.println("Ouch! " + col);
}
public void mouseReleased(MouseEvent e) {
int col = header.columnAtPoint(e.getPoint());
renderer.setPressedColumn(-1); // clear
header.repaint();
}
}
class ButtonHeaderRenderer extends JButton implements TableCellRenderer {
int pushedColumn;
public ButtonHeaderRenderer() {
pushedColumn = -1;
setMargin(new Insets(0,0,0,0));
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
setText((value ==null) ? "" : value.toString());
boolean isPressed = (column == pushedColumn);
getModel().setPressed(isPressed);
getModel().setArmed(isPressed);
return this;
}
questo pezzo di codice:
ButtonHeaderRenderer renderer=new ButtonHeaderRenderer();
model.getColumn(i).setHeaderRenderer (renderer);
penso sia la chiave ,cosa fa' il renderer?crea un oggetto non soltanto lo disegna?.
Io vorrei inserire nell'header sia il jbutton(come è adesso)sia una jtextarea per eseguire filtri.
premetto che ho cercato sul forum ma ho trovato poco o niente,io vorrei piu' che altro capire ,se avete dei link(soprattutto in italiano sono benvenuti, una breve spiegazione , ancora meglio.
Ciao.