Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [java]renderer

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [java]renderer

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    leggendo qua e la penso di aver capito,il renderer disegna solamente il controllo e, essendo pulsanti lo disegna nello stato on e nello stato off a seconda se viene cliccato o meno.
    è cosi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.