Jlist di oggetti renderizzata in Jbutton

di il
3 risposte

Jlist di oggetti renderizzata in Jbutton

Ciao a tutti,
abituato a muovermi tra le pagine php, mi sto perdendo tra i riferimenti tra frame di un progetto JAVA swing.
Sto creando un programmino che usa com.github.sarxos.webcam.Webcam

Ho creato una finestra (Windows.frame )con 2 frame interni: in uno (FrameImmagini) ci metto il com.github.sarxos.webcam.WebcamPanel e nell'altro frame volevo metterci una Jlist<Webcam> renderizzata a jbutton, che al click o all'invio cambia il riferineto di webcam al WebcamPanel.

Ho provato così:
per renderizzare la JList sto creando una classe così:
---
public class camListRender extends JButton implements ListCellRenderer {

    public camListRender()
    {
        this.setOpaque(true);
        this.setIconTextGap(10);
    }
    public Component getListCellRendererComponent( JList list, Object value,
        int index, boolean isSelected, boolean cellHasFocus)
    {
    
    	String tii  =  getName();
        this.setText(tii);
        this.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				ViewSize(WebcamResolution.QVGA.getSize());
			// ????  WebcamPanel panel = new WebcamPanel(arg0, false);
	            
				 photoPannel.add(panel);
				FrameImmagini.getContentPane().add(panel);
				FrameImmagini.pack();
			}
		});
        if(isSelected)
        {
            this.setBackground(Color.GRAY);
            this.setForeground(Color.WHITE);
        }
        else
        {
            this.setBackground(Color.WHITE);
            this.setForeground(Color.BLACK);

        }
     return this;
}
	
}
--

Gia ho dubbi che il "getName()" faccia riferimento all'oggetto webcam della lista e non al Jbutton
String tii  =  getName();
        this.setText(tii);
poi
come faccio a fargli cambiare riferimento al pannello della webcam nel FrameImmagini ?

3 Risposte

  • Re: Jlist di oggetti renderizzata in Jbutton

    aleWEB ha scritto:


    nell'altro frame volevo metterci una Jlist<Webcam> renderizzata a jbutton, che al click o all'invio cambia il riferineto di webcam al WebcamPanel.
    Anche supponendo (ed è tecnicamente/teoricamente possibile) "renderizzare" un pulsante in una cella di JList, quelli che l'utente vedrebbe NON sono "veri" pulsanti. Si tratta solo di una "proiezione", proprio una stampa dell'aspetto del pulsante. Ma non c'è "comportamento".
    Questo purtroppo è il limite del concetto di "renderer" (e in JList c'è solo renderer .... non è come in JTable dove c'è renderer E editor).

    aleWEB ha scritto:


    come faccio a fargli cambiare riferimento al pannello della webcam nel FrameImmagini ?
    Di per sé, con il "solito" concetto di selezione in JList: la registrazione di un ListSelectionListener e poi la determinazione di cosa è cambiato nella selezione. In alternativa, gli eventi a basso livello del mouse e poi dal punto cliccato risalire all'indice "logico" della cella su cui si è cliccato.
  • Re: Jlist di oggetti renderizzata in Jbutton

    Suggerimento: se non hai da gestire una quantità spropositata di pulsanti (20, 30 .. 50 sono ancora ok), allora sarebbe più semplice avere un pannellino con un layout manager che faccia stare in verticale i pulsanti e poi tale pannellino messo in JScrollPane per lo scrolling.
  • Re: Jlist di oggetti renderizzata in Jbutton

    Ciao,
    grazie, dell'aiuto! Alla fine, non ho proprio usato i bottoni, ma ho renderizzato delle label e ho messo la lista in ascolto con ListSelectionListener!
    In questo modo son riuscito anche a fare riferimento al frame interno che conteneva il panel della webcam!
    Poi ho risolto con 2 variabili in cui memorizzavo il valore precedente per poter disattivare la webcam che si stava guardando prima di riprodurre quella scelta nell'elenco.
    Ora devo solo sistemare la risoluzione delle jpeg estrapolate dalle varie cam, e poi spedirle via FTP ...
    Poi vedrò se riuscirò a creare un mpg con le jpeg salvate in sequenza! (ho gia visto qualcosa ma per altre priorità devo ancora provare)
Devi accedere o registrarti per scrivere nel forum
3 risposte