Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-10-2006, 17:11   #1
julianross1983
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 25
[JAVA] Jpanel come cella di JTable?

Sarebbe possibile inserire come cella di una JTable una JPanel?
julianross1983 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2006, 17:22   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Si.

Ciò che appare come cella di un JTable è il prodotto dell'applicazione del metodo getTableCellRendererComponent al contenuto di quella cella. Se il contenuto della cella è un JPanel il proiettore, che definisce il metodo in esame, può limitarsi a restituire quel JPanel.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2006, 19:15   #3
julianross1983
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 25
esempio

Un esempio tipico?Ho notato parecchie classi che bisogna modificare o gestire?grazie tante
julianross1983 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2006, 20:19   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Pronti!.

Faccio un esempio di proiezione di un pannello.

Codice:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class Main {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				start();
			}
		});
	}
	
	private static void start() {
		/* Crea il pannello che andrà nella cella (1,1) */
		JPanel panel = new JPanel();
		panel.setBorder(BorderFactory.createLoweredBevelBorder());
		panel.setBackground(Color.PINK);
		panel.setOpaque(true);
		/* Dati usati dalle righe della tabella */
		Object[][] tableData = {
			{ "Pino", "Beppe" },
			{ "Giusi", panel },
		};
		/* Intestazioni delle colonne della tabella */
		Object[] tableHeaders = {
			"A", "B",
		};
		/* Crea il modello della tabella */
		TableModel tableModel = new DefaultTableModel(tableData, tableHeaders);
		/* Crea la tabella */
		JTable table = new CustomTable();
		/* Assegna un modello alla tabella */
		table.setModel(tableModel);
		/* Mette la tabella in un pannello a scorrimento */
		JScrollPane tableScroller = new JScrollPane(table);
		/* Crea la finestra, aggiunge il pannello a scorrimento che contiene la
		tabella al pannello del contenuto della finestra e spara quest'ultima
		sullo schermo */
		JFrame window = new JFrame("PanelRenderer Sample");
		window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		window.add(tableScroller, BorderLayout.CENTER);
		window.pack();
		window.setVisible(true);
	}
}

/** Proietta il contenuto delle celle della tabella */
class PanelRenderer extends DefaultTableCellRenderer {
	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
	{
		/* value è il valore conservato nel modello della tabella in corrispondenza
		della cella (row, column). Se quel valore è un JPanel restituisco direttamente
		quel JPanel come vista del contenuto, altrimenti uso la definizione standard di
		questo metodo */
		return value instanceof JPanel ?
			(JPanel)value :
			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
	}
}

/** Ridefinisce il metodo getCellRenderer in modo che restituisca un
PanelRenderer per la cella (1,1) */
class CustomTable extends JTable {
	private PanelRenderer panelRenderer = new PanelRenderer();
	
	/** Tutto standard tranne il caso in cui la cella sia la (1,1): lì deve
	esserci un JPanel e per quella cella restituisco un proiettore ad hoc */
	public TableCellRenderer getCellRenderer(int row, int column) {
		return row == 1 && column == 1 ?
			panelRenderer :
			super.getCellRenderer(row, column);
	}
	
	/** Questo metodo è invocato quando un certo tipo di interazione utente
	segnali un tentativo di mutare il valore di una cella della tabella. Rendiamo
	il valore della cella (1,1) "non interagibile". Per tutti gli altri rinviamo
	al meccanismo standard. */
	public boolean isCellEditable(int row, int column) {
		return row == 1 && column == 1 ?
			false :
			super.isCellEditable(row, column);
	}
}
Noterai che il pannello assume le dimensioni delle altre celle e che, per esplicita volontà, non è passibile di interazione. Per le dimensioni passi per i metodi getRowHeight(int row) di JTable e getColumnWidth(int col) di JTableHeader. Per l'interazione crei un tuo TableCellEditor.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2006, 21:39   #5
julianross1983
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 25
grazie mille

sei davvero un grande!
julianross1983 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2006, 12:34   #6
julianross1983
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 25
Nella cella della JTable ho un oggetto complesso (Plane) composto da: un JPanel che contiene 3 JLabel....ora...vorrei poter gestire il drag and drop tra le JLabel di due oggetti Plane contenuti nella JTable.E' possibile?e quali metodi bisogna gestire..grazie
julianross1983 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2006, 16:41   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non è difficile ma potrebbe richiede un po' di maneggiamenti.

Io proverei ad associare il drag and drop alla tabella. Gli eventi di trascinamento e rilascio iniziano e finiscono in un "Point". Attraverso quel Point puoi risalire alla cella della tabella in cui il rilascio inizia o termina. Banalmente, per il drag, se il punto corrisponde ad una cella che contiene un valore JPanel e, fatte le opportune conversioni dell'origine degli assi, in quel punto il JPanel ha un'etichetta, inizi il trascinamento – spostando l'etichetta o la stringa... quello che devi trascinare.

Lo stesso vale per il rilascio. Se nel punto di rilascio c'è una cella il cui valore è un JPanel e, fatte le opportune conversioni, in quel punto del pannello c'è un'etichetta, rilasci... quello che devi rilasciare.

Alternativamente puoi far si che il controllo passi al JPanel contenuto nella tabella alla pressione del mouse o al suo rilascio (lo stabilisci creando un TableCellEditor ad hoc). A quel punto gestisci il trascinamento e il rilascio direttamente dai JPanel. In teoria . Non so poi se possano esserci interferenze tra gli eventi del mouse che attivano la modifica di una cella e il fatto che gli stessi eventi debbano anche attivare le azioni di trascinamento e rilascio. Direi che questa seconda soluzione potrebbe essere un po' più complicata.

Ricorda che affinchè la tabella mostri il cambiamento di valori dovuti al drag and drop, dovrai dire alla tabella, passando per il suo modello, di ricaricare il contenuto delle celle interessate dal drag and drop.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2006, 19:01   #8
julianross1983
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 25
NON RIESCO AD IMPLEMENTARE IL "TABLECELLEDITOR",PER GESTIRE IL TRASCINAMENTO DI UNA JLABEL CONTENUTA IN PANNELLO CHE A SUA VOLTA E' CONTENUTO IN UNA CELLA DI UNA JTABLE.....COME SI PUO' RISOLVERE?ESEMPIO!GRAZIE

Ultima modifica di julianross1983 : 30-10-2006 alle 00:22.
julianross1983 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
NVIDIA aggiorna DGX Spark: nuovo kernel,...
Con Work IQ, Copilot per Microsoft 365 i...
Azure Cobalt 200: svelata la nuova CPU A...
Intel a tutto tondo: tra processi in ram...
AMD FSR Redstone arriverà ufficia...
L'Olanda 'cede' alla Cina: retromarcia t...
Stagione 1 al via: tutte le novità...
TikTok rafforza trasparenza e benessere ...
Zigbee 4.0 è qui: più sic...
La trasformazione agentica di Windows pa...
Crollo del 29% nelle vendite dirette: Ub...
Black Friday anticipato su Amazon: NARWA...
Disastro WhatsApp: esposti 3,5 miliardi ...
Hatsune Miku per tutti: ASUS ROG present...
La Definitive Edition di Tomb Raider sba...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v