Discussion:
JTable resizen
(zu alt für eine Antwort)
Zaph
2003-11-05 22:38:45 UTC
Permalink
Hallo

Habe einige Mühe meine Tabelle zu verkleinern oder zu vergrössern. Ich
habe eine JFrame und daring liegt ein JPanel mit einer Tabelle. Nun
möchte ich die Grösse der Tabelle anpassen, sobald die Grösse des
JFrames geändert wird. Dazu habe ich componentResized() implementiert
und dachte darin mit table.resize() zum gewünschten Ergebniss zu kommen.

Es passiert aber gar nichts (obwohl auf der Konsole die richtigen
Fenstergrössen ausgegeben werden).

// implementing ComponentListener
public void componentResized(ComponentEvent e){
System.out.println("Window State changed...");
System.out.print(e.getComponent().getSize());
table.resize(new Dimension(e.getComponent().getSize()));
}

Hat jemand eine Idee wie das zu bewerkstelligen ist?

Gruss
Zaph



-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 100,000 Newsgroups - 19 Different Servers! =-----
Stefan Wischnewski
2003-11-06 09:01:43 UTC
Permalink
Post by Zaph
Hallo
Habe einige Mühe meine Tabelle zu verkleinern oder zu vergrössern. Ich
habe eine JFrame und daring liegt ein JPanel mit einer Tabelle. Nun
möchte ich die Grösse der Tabelle anpassen, sobald die Grösse des
JFrames geändert wird. Dazu habe ich componentResized() implementiert
und dachte darin mit table.resize() zum gewünschten Ergebniss zu kommen.
Es passiert aber gar nichts (obwohl auf der Konsole die richtigen
Fenstergrössen ausgegeben werden).
// implementing ComponentListener
public void componentResized(ComponentEvent e){
System.out.println("Window State changed...");
System.out.print(e.getComponent().getSize());
table.resize(new Dimension(e.getComponent().getSize()));
}
Hat jemand eine Idee wie das zu bewerkstelligen ist?
Durch Verwendung eines der fertigen Layout-Manager ?
Noch beachten, dass Tabellen meistens in Scrollpanes gehören.

Stefan
Jan Reidemeister
2003-11-06 09:34:21 UTC
Permalink
Hallo,
Post by Zaph
Habe einige Mühe meine Tabelle zu verkleinern oder zu vergrössern. Ich
habe eine JFrame und daring liegt ein JPanel mit einer Tabelle. Nun
möchte ich die Grösse der Tabelle anpassen, sobald die Grösse des
JFrames geändert wird.
Das sollte eigentlich alles der LayoutManager machen. Ansonsten nehme
ich mal an, dass die Tabelle in einer ScrollPane liegt, dann macht es
wenig Sinn, die Tabelle zu aendern.

Bye. JR
Zaph
2003-11-06 21:50:57 UTC
Permalink
Post by Jan Reidemeister
Das sollte eigentlich alles der LayoutManager machen. Ansonsten nehme
ich mal an, dass die Tabelle in einer ScrollPane liegt, dann macht es
wenig Sinn, die Tabelle zu aendern.
Danke für den Tipp. Es ist eben so, dass wenn das Frame (trotz z.B
vergrössern des users) zu klein die Table scrollbar sein soll. Dann ist
es schon sinnvoll die Table wenigsten auf Framegrösse zu vergrössern.
Aber jetzt zu Eurem Tipp. Habe mich ran gemacht und eine kleine
Testprogramm mit zwei Klassen geschrieben.

Funzt aber nicht wie gewünscht Table bleibt immer gleich gross.

Vielleich eine Ahnung, was ich da falsch mache?

Merci
Zaph




// ########## Klasse Frame ########## ///

package tabletest;

import javax.swing.*;
import java.awt.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class Frame extends JFrame{

private Table tablePanel = new Table();
public Frame() {
super("Mein Frame");
GridBagLayout gridBag = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
// Setting constraints for mainPane
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridheight = 1;
constraints.gridwidth = 1;
constraints.fill = GridBagConstraints.BOTH;
constraints.anchor = GridBagConstraints.CENTER;
gridBag.setConstraints(tablePanel, constraints);
getContentPane().add(tablePanel);
}

public static void main(String[] args){
Frame frame = new Frame();
frame.pack();
frame.show();
}
}

/// ######## Ende Klasse Frame ######### ///


/// ######### Klasse Table ########## ////

package tabletest;

import javax.swing.*;
import java.awt.*;


/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class Table extends JPanel{
public Table() {
JTable myTable = new JTable(10,10);
JScrollPane scrollPane = new JScrollPane(myTable);
add(scrollPane);
}

}

// ####### Ende Klasse Table ######## //



-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 100,000 Newsgroups - 19 Different Servers! =-----
Zaph
2003-11-06 22:02:47 UTC
Permalink
Post by Zaph
Danke für den Tipp. Es ist eben so, dass wenn das Frame (trotz z.B
vergrössern des users) zu klein die Table scrollbar sein soll.
Deutsch für Du..., meinte:

Es ist eben so, dass wenn das Frame zu klein ist (trotz z.B vergrössern
des Frames durch den user), die Table scrollabar sein soll. Falls das
Frame aber grösser ist als die Table Platz einnimmt (um alle Zeilen und
Spalten vernünftig darzustellen), wäre es doch schön wenn die Table
proportional auf Framegrösse vergrössert würde (meiner Meinung nach
jedenfalls).

Hoffe es ist jetzt ein bisschen klarer was ich meinte....

Gruss
Zaph



-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 100,000 Newsgroups - 19 Different Servers! =-----
Peter Büttner
2003-11-06 22:14:18 UTC
Permalink
Post by Zaph
Post by Zaph
Danke für den Tipp. Es ist eben so, dass wenn das Frame (trotz z.B
vergrössern des users) zu klein die Table scrollbar sein soll.
Es ist eben so, dass wenn das Frame zu klein ist (trotz z.B vergrössern
des Frames durch den user), die Table scrollabar sein soll. Falls das
Frame aber grösser ist als die Table Platz einnimmt (um alle Zeilen und
Spalten vernünftig darzustellen), wäre es doch schön wenn die Table
proportional auf Framegrösse vergrössert würde (meiner Meinung nach
jedenfalls).
Schau dir doch mal mein posting von heute früh (2:30) an, da geht's
zwar um was 'anderes', doch tut es das Beispiel wohl genau.

Re: table row striping
Message-ID: <boc8aj$1beg72$***@ID-101012.news.uni-berlin.de>



Grüße
Peter
--
Shell&Jar : Individual icons for jars
jMineSweeper : extended
www.PeterBuettner.de
Jan Reidemeister
2003-11-07 10:02:08 UTC
Permalink
Post by Zaph
Post by Jan Reidemeister
Das sollte eigentlich alles der LayoutManager machen.
Wie schon gesagt.
Post by Zaph
public class Table extends JPanel{
public Table() {
super (new BorderLayout ());
Post by Zaph
JTable myTable = new JTable(10,10);
JScrollPane scrollPane = new JScrollPane(myTable);
add (scrollPane, BorderLayout.CENTER);
Post by Zaph
}
}
Sonst hast Du nur ein einfaches FlowLayout und das beachtet
halt die Groesse des umgebenen Containers nicht.

Bye. JR
zaphod748
2003-11-12 21:31:37 UTC
Permalink
Hallo zusammen

Danke Euch allen! Den Hinweis doch den Layout Manager zu gebrauchen, war
genau, was ich gebraucht habe.

Danke!!
Zaph



-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 100,000 Newsgroups - 19 Different Servers! =-----

Loading...