Avatar billede mungojerrie Nybegynder
12. november 2004 - 12:58 Der er 1 kommentar og
1 løsning

getColumnName, højden af columnheader ændrer sig

hej

Har et lille problem med at ændre på mine columnheaders på min jtable under runtime. Jeg kan fint ændre teksten, men højden på headeren ændrer sig til et noget mindre højde end hvad den er til at starte med når programmet køres

Min JTable class :

import javax.swing.JTable;
import javax.swing.table.TableModel;

public class CustomerTable extends JTable {

CustomerTableModel tableModel = null;
CustomerTable table = null;

public CustomerTable(TableModel tm) {
super(tm);
tableModel = (CustomerTableModel) tm;
table = this;

getTableHeader().setReorderingAllowed(false);
setDragEnabled(false);
setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
setShowHorizontalLines(true);
setGridColor(Color.lightGray);
setShowVerticalLines(false);
configureEnclosingScrollPane();
setAutoResizeMode(AUTO_RESIZE_OFF);
setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 11));
setColumnSelectionAllowed(true);
setRowSelectionAllowed(true);
setCellSelectionEnabled(true);

}

public void resetSizes() {
getColumnModel().getColumn(0).setPreferredWidth(65);
getColumnModel().getColumn(1).setPreferredWidth(100);
getColumnModel().getColumn(2).setPreferredWidth(100);
getColumnModel().getColumn(3).setPreferredWidth(478);
}

public boolean isSelectedRow() { return (getSelectedRows().length == 1); }
public boolean isSelectedRows() { return (getSelectedRows().length >= 1); }
}


Min TableModel class:


import dk.IncrementalListTableModel;

public class CustomerTableModel extends IncrementalListTableModel {


public CustomerTableModel() {}

public Object getValueAt(int row, int column) {
Object obj = null;
try {
obj = (Object)(getObjectAt(row));
}catch(Exception e) {
e.printStackTrace();
}
if(obj instanceof CustomerPerson){
CustomerPerson cp = (CustomerPerson)obj;
if (cp == null) return "";
switch(column) {
case 0 : return cp.getMobileNummer();
case 1 : return cp.getFirstName();
case 2 : return cp.getLastName();
case 3 : return cp.getAddress();
}
}
if(obj instanceof CustomerGroup){
CustomerGroup cg = (CustomerGroup)obj;
if(cg == null) return "";
switch(column) {
case 0 : return "";
case 1 : return cg.getGroupName();
case 2 : return cg.getNotes();
case 3 : return "";
}
}
return "";
}

public int getColumnCount() { return 4; }

public String getColumnName(int column) {
boolean b = false;
try {
b = GUI.getGUI().getBody().getCustomerPanel().groupsChoosen;
} catch (Exception e) {

}
if(!b){
switch (column) {
case 0: return "CUSTOMER_PHONENR";
case 1: return "CUSTOMER_FIRSTNAME";
case 2: return "CUSTOMER_LASTNAME";
case 3: return "CUSTOMER_ADDRESS";
}
}else{
switch (column) {
case 0: return "";
case 1: return "GROUP_NAME";
case 2: return "GROUP_NOTES";
case 3: return "";
}
}
return "";
}
}
Avatar billede _carsten Nybegynder
13. november 2004 - 15:01 #1
Har du prøvet at lave en repaint() af din TableHeader efter hvergang du ændrer kolonne overskrift ???
Avatar billede mungojerrie Nybegynder
15. november 2004 - 08:34 #2
hej carsten, nej det har jeg ikke, men jeg fandt svaret et andet sted og det skyldes åbenbart en bug i java koden for look-and-feel impl.
Så hvis jeg bare sørger for der altid returneres mere end den tomme streng så virker det:

case 0: return " "; i stedet for case 0: return "";
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester