TableLayout Probleme

Status
Nicht offen für weitere Antworten.

IceTi

Bekanntes Mitglied
Hi,

ich versuche mich gerade an dem TableLayout für eine JPanel. Doch irgendwie komme ich damit nicht klar.
Habe mir schon mehrere Bsp. angeguckt, bekomme es aber leider nicht hin.

Ich möchte eine Feld mit 20 Spalten und 40 Zeilen machen. In diese Felder sollen dann kleine Bilder (20*20 Pixel) eingefügt werden.

Wie mache ich das?
 
Mir ist persönlich kein TableLayout bekannt und ich konnte in der API auch keinen solchen LayoutManager finden.
Meinst du GridLayout? Das würde deinen Zwecken auch genügen.

Code:
panel.setLayout(new GridLayout(40, 20)); //Panel mit 20 Zeilen & 40 Spalten

GridLayout ist so konfiguriert, dass alle Elemente den selben Platz bekommen. D.h. wenn du jetzt ein Bild mit 20*20 einfügst, erhalten alle anderen Komponenten mindestens die Größe dieser Zelle.
Beim Einfügen musst du daran denken, dass es immer zeilenweise geht. Du musst die add-Methode also schon in der richtigen Reihenfolge aufrufen.
 
Danke.

Nun habe ich das Problem das das Panel nicht angzeit wird. Das neue (mit dem GridLayout) soll über eine anderes JPanle gelegt werden, welches allerdings viel größer ist.

Wie mache ich das nun, dass beide angezeigt werden.

Code:
        pTest = new JPanel();
        pTest.setLayout(new GridLayout(40, 20));
        pTest.setBackground(Color.blue);
        pTest.setBounds(0, 0, 200, 200);
 
Wenn du mit LayoutManagern arbeitest, sind Angaben wie setBounds(0, 0, 200, 200); wirkungslos. Der Layoutmanager
enscheidet, wie gross eine Komponente in einem Container wird.

Du hast ein Panel mit GridLayout und dieses soll in ein anderes Panel mit TableLayout rein? Füge es einfach mit
add ein. Evtl. kannst du noch bei dem Panel mit GridLayout setPreferredSize(new Dimension(200, 200)) schreiben.
 
Ne, das andere Panel kann das Null-Layout, wie setze ich denn dann die Position des neuen Panels ?
 
OK, dann doch mit pTest.setBounds(0, 0, 200, 200);, aber du muss es mit "add" in das andere Panel einfügen.
 
Habs nun so;

pMain.add(pTest);

Jetzt wird pTest allerdings hinter pMain gelegt und auch immer groß wie das Fenster grad ist... was mache ich jetzt falsch ?
 
Wenn du kein Layout verwendest, musst du dich um die Größe der Komponente selbst kümmern.
So wie ich das verstehe, hast du ungefähr sowas
Code:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class LayoutExample extends JPanel
{
   private static final long serialVersionUID = 1L;

   public LayoutExample()
   {
      super(null);
      
      JPanel grid = new JPanel(new GridLayout(20, 40));
      grid.setBackground(Color.BLUE);
      grid.setBounds(0, 0, 200, 200);
      
      add(grid);
   }
   
   public static void main(String[] args)
   {
      final JFrame f = new JFrame(); 
      f.addWindowListener( 
         new WindowAdapter() { 
            public void windowClosing(WindowEvent e) { 
               f.setVisible(false); 
               System.exit(0); 
            } 
         } 
      );
      f.add(new LayoutExample());
      f.setSize(600, 400);
      f.setLocationRelativeTo(null); 
      f.setVisible(true); 
   }
}
 
IceTi hat gesagt.:
So ähnlich... wie mache ich das denn nun das das GridPanel vor dem NullPanel liegt ?
Sorry, ich verstehe nicht, wie du es meinst. ???:L
Das Panel mit dem Grid ist die Komponente, die oben "liegt".

Die Hierarchie ist
Code:
JFrame
  |-- ContentPane (mit BorderLayout)
        |-- LayoutExample (null Layout)
              |-- JPanel (GridLayout)
 
Bei mir wird das GridPanelaber irgendwie hinter das andere gelegt.
Außerdem ist das GridPanel unendlich groß..

Ich möchte dises Grid Dingen aber auf das andere an einer Bestimmten stellt platzieren.
 
Kann es sein, dass du mein Beispiel nicht ausprobiert hast? Da wird nämlich das Grid nur in der Grüße 200x200 angezeigt.
Wenn es bei dir nicht der Fall ist, dann hast du etwas ganz anderes im Code.
Denk immer daran, dass hier niemand deinen Code sieht und quasi raten muss, was du vor hast.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben