[ tiranin @ 13.12.2005. 18:21 ] @
Želim da tabelu (JTable) proširim, tako da se sve kolone srazmerno "razvuku". Ima li neko jednostavno rešenje ili moram da svaku kolonu preračunavam i da radim columnModel.getColumn(i).setPreferredWidth(....) ?

[Ovu poruku je menjao tiranin dana 13.12.2005. u 19:25 GMT+1]
[ bgd2500 @ 16.12.2005. 13:10 ] @
Koji Layout koristis ?
[ tiranin @ 17.12.2005. 10:26 ] @
Nije samo jedan Layout u pitanju, i ne brine me ponašanje u udnosu na "susedne" komponente. Ovo mi treba najviše zbog print() i getPrintable(), jer želim da tabelu JTable koja je u nekom JPanelu, iskoristim i da joj odštampan sadržaj, ali veličina panela nije ista kao veličina papira, pa želim da je privremeno razvučem.
[ bgd2500 @ 19.12.2005. 11:13 ] @
Probaj da setujes velicinu tabele sa setSize() odnosno setBounds().
[ tiranin @ 19.12.2005. 11:32 ] @
Izgleda da se ne razumemo. Ako sam tabelu tako "dizajnirao" i pojedinim kolonama postavio širine da bi lepo izgledale na panelu širine oko 600 piksela, sa horizontalnim skrolom itd. kada želim da je proširim na npr. 1700 piksela, hoću da mi se sve kolone srazmerno razvuku, i one koje imaju default širinu i one kojima sam postavio širinu na neku vrednost.
To se ne postiže ni sa setSize() ni sa setBounds(), pa zato i pitam zna li neko da li to uopšte može.
[ bgd2500 @ 19.12.2005. 15:16 ] @
OK skontao sam.
Ako si sam setovao sirine kolonama onda mislim da ne moze. Nisam doduse 100% siguran, jer sam se davno time bavio, zato ipak pogledaj dokumentaciju.
[ rj444 @ 24.12.2005. 18:57 ] @
Probaj da iskoristis setSize() ali na sledeci nacin:

Prodji for petljom kroz sve kolone i za svaku uzmi sirinu sa getWidth().
A onda ovo pomnozi sa 1700/600 i uradi setWidth(). Znaci nesto ovako:

Code:

for (int i=0; i<brKol; i++) {
  int w=tabela.getColumnModel().getColumn(i).getWidth(); // ili tako nesto
  int nova_sirina=w*1700/600;
  tabela.getColumnModel.getcolumn(i).setWidth(nova_sirina);
}


Koristi preferedWidth() moetodu.

Verovatno moze i nesto elegantnije, ali ako ne nadjes bolje resenje moze i ovo da posluzi.

Pozdrav.
[ rj444 @ 24.12.2005. 19:04 ] @
Izvini na brzinu sam odgovorio pa sam tek sada video da neces da siris kolone jednu po jednu. A usput sam se setio da mozda mozes da prvo dohatis Graphics objekat pa njega da rasiris. Ali ne znam tacan nacin, verovatno postoje metode da to uradis. Probaj da to uradis sa objektom Graphics2D.

Code:

  .
  .
  .
  Graphics2D g2D=(Graphics2D)table.getGraphics();
 //ovde ide kod za prosirivanje objekta g2D 
  .
  .
  .