Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-02-2010, 17:05   #1
bobby1112
Senior Member
 
Iscritto dal: May 2009
Messaggi: 366
[Java] Impostare nome ad una colonna JTable

salve ragazzi ho questo problemasto creando una JDialog che contiene 2 Tabelle(con 1 colonna) con i rispettivi modelli ma non riesco ad impostare il nome alle colonne
Quote:
package view.dialogs.checkDatatypeDialogs;

import java.awt.Color;
import java.awt.Component;
import java.util.LinkedList;
import java.util.List;

import javax.swing.Box;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;



import model.program.Attribute;
import model.program.Entity;
import model.program.SourceEntity;
import model.utilities.ModelUtilities;


public class CheckDialog extends JDialog{

private JList databasetype;
private JList typtype;
private JTable tableTypeDatabase=new JTable();
private JTable tableTypeTyp=new JTable();
private TableModelDatabase model=new TableModelDatabase();
private TableModelTyp model2=new TableModelTyp();


public CheckDialog(JFrame owner,String [][] datatype,SourceEntity typdatatype)
{
super(owner);
this.setName("Check DataType");


model.setEntity(typdatatype);
model2.setEntity(datatype);

tableTypeDatabase.setModel(model);
tableTypeTyp.setModel(model2);


this.setSize(350,200);
if (owner != null){
int x = (owner.getWidth() - this.getWidth()) / 2;
int y = (owner.getHeight() - this.getHeight()) / 2;;
this.setLocation(x, y);
}
Box top=Box.createVerticalBox();
top.add(Box.createVerticalStrut(30));
Box table1=Box.createHorizontalBox();
top.add(table1);
table1.add(tableTypeDatabase);
top.add(Box.createHorizontalStrut(30));
table1.add(tableTypeTyp);


JPanel panel = new JPanel();
panel.add(top);
getContentPane().add(panel);


this.setVisible(true);

}




private class TableModelDatabase extends AbstractTableModel{
/**
*
*/
private static final long serialVersionUID = 1L;
private SourceEntity entity = null;
private String [] columnName={"Database"};

public void setEntity(SourceEntity entity){
this.entity = entity;
}

public int getColumnCount() {
return 1;
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == 2){
return true;
}
return false;
}

public int getRowCount() {
if (entity != null){
return entity.getAttributes().size();
}else{
return 1;
}
}

public Object getValueAt(int rowIndex, int columnIndex) {
if (entity != null){
Attribute attribute = entity.getAttributes().get(rowIndex);
if (columnIndex == 0){
return attribute.getOriginalType();
}else if (columnIndex == 1){
return attribute.getOriginalType();
}else{
return attribute.getImportedType();
}
}else{
return null;
}
}
public String getColumnName(int column) {

return columnName[0];

}

//Selezionare il tipo con menu a tendina
@Override
public void setValueAt(Object arg0, int arg1, int arg2) {
super.setValueAt(arg0, arg1, arg2);
if (arg2 == 2){
entity.getAttributes().get(arg1).setImportedType(arg0);
}
}
}

private class TableModelTyp extends AbstractTableModel{

private String [][] entity=null;

public void setEntity(String [][] entity){
this.entity = entity;
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return 1;
}

@Override
public int getRowCount() {
// TODO Auto-generated method stub
return entity.length;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if(columnIndex==0)
return entity[rowIndex][1];
return null;
}
public String getColumnName(int column) {

if(column==0)
return "Typ";
else if (column!=0);
return ".Typ";

}

}

}
__________________
visitate http://www.forumsenzacontro.altervista.org
bobby1112 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2010, 02:48   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il codice è ok - nel senso che è corretto il modo in cui assegni un nome alle colonne attraverso il modello.

La magagna è visuale.

JTable è fatta due parti, il corpo (JTable) e l'intestazione (jtable.getTableHeader).

Normalmente una jtable è inserita in un JScrollPane. JScrollPane ha il "trucco": quando si vede arrivare una tabella mette il corpo nello scroller e l'intestazione nell'intestazione dello scroller.

Se nel tuo codice scrivi al posto di:

table1.add(tableTypeDatabase);

metti:

table1.add(new JScrollPane(tableTypeDatabase))

vedrai apparire le intestazioni. Si può fare anche senza JScrollPane, devi semplicemente aggiungere alla tua interfaccia sia il corpo sia l'intestazione della tabella. Ad esempio:

JPanel panel = new JPanel(new BorderLayout());
panel.add(table.getTableHeader(), BorderLayout.NORTH);
panel.add(table, BorderLayout.CENTER);

Ci sono alcune differenze tra usare o non usare un JScrollPane. A parte le barre di scorrimento, JScrollPane crea una superficie un po' più alta di quanto strettamente necessario a mostrare le righe della tabella. Inserendo direttamente il corpo (e l'intestazione) la tabella assume una dimensione minima sufficiente a visualizzare righe e colonne attualmente esistenti.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2010, 10:58   #3
bobby1112
Senior Member
 
Iscritto dal: May 2009
Messaggi: 366
ok per il nome della colonna sono riuscito ad impostarlo adesso ho questo problema usando lo scrollPane

table1.add(new JScrollPane(tableTypeDatabase))

adesso devo settare le dimensioni della tabella

1-se faccio in questo modo

tableTypeDatabase.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tableTypeDatabase.getColumnModel().getColumn(0).setPreferredWidth(100);

mi rimane lo spazio grigio vuoto dello scrollPane

2-se invece faccio

scrollPane.setPreferredSize(new Dimension(300,200));

è tutto ok ma di nuovo non vedo il nome sulla colonna


spero di essermi spiegato Grazie
__________________
visitate http://www.forumsenzacontro.altervista.org
bobby1112 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2010, 12:20   #4
bobby1112
Senior Member
 
Iscritto dal: May 2009
Messaggi: 366
per il momento ho risolto in questo modo

tableTypeDatabase.setPreferredScrollableViewportSize(new Dimension(200, 150));
__________________
visitate http://www.forumsenzacontro.altervista.org
bobby1112 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
La Cina potrebbe puntare con maggiore de...
Un clamoroso errore strategico: il nuovo...
Cos’è il nuovo cartello del "...
HP: gli attacchi con l'IA puntano su vel...
Acer compie 50 anni e si trasforma: dall...
La rete elettrica USA funziona solo a me...
La Corte Costituzionale albanese: 'Il ba...
Secondo trailer del nuovo anime di Ken i...
La guerra tra Russia e Ucraina arriva co...
KadNap: il botnet che ha infettato 14.00...
Il cloud è sempre più cent...
Lisuan svela la GPU gaming LX 7G106: deb...
Amazon piena di offerte, ma queste sono ...
Wi-Fi veloce: router e mesh Huawei super...
La retrocompatibilità di Project ...
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: 18:14.


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