Komponenten von JPanel bleiben unsichtbar

rwolf

Bekanntes Mitglied
also,
ich grüble schon ne ganze Weile, finde aber den Grund nicht :

einem JPanel sollen Komponenten hinzugefügt werden.
das Panel kommt in einer JScrollBar-Container usw.

Momentan sieht man aber immer nur die Hintergrundfarbe des Panels, nicht seine Komponenten; hier das Panel-Modul :
Java:
package ibrowser_simple1;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;

public class ts_mrow_table1 extends JPanel
{
  private static int iCols = 0;
  private static int iRows = 0;
  private static Font eg_font = new Font("Monospaced",Font.PLAIN,16);  
  
  public ts_mrow_table1(Vector vData,Vector vHeader, int hgap,int vgap)
  {
  this.setBackground(Color.LIGHT_GRAY);
  this.setForeground(Color.RED);
  this.setMinimumSize(new Dimension(200,300));
  //construct(vData,vHeader, hgap,vgap);
  /*
  iCols = vHeader.size();
  iRows = vData.size();
  if((iRows * iCols) == 0)
  return;
  System.out.println("ts_mrow_table1 construct Rows : "+iRows+" Cols : "+iCols+" hgap : "+hgap+" vgap : "+vgap);
  
  iRows++;  //- 1 Zeile mehr fuer Header !
  
  if(hgap == 0)
  hgap= 15;
  if(vgap == 0)
  vgap = 30;
  GridLayout eLayout = new GridLayout(iRows,iCols, hgap,vgap);
  
  this.setLayout(eLayout);
  */
  this.setLayout(new BorderLayout());
  this.add(new JLabel("test1"),BorderLayout.NORTH);
  this.add(new JLabel("test2"),BorderLayout.WEST);
  this.add(new JButton("btest3"),BorderLayout.EAST);
  this.add(new JTextField("txtest4"),BorderLayout.SOUTH);
  this.revalidate();
  this.setEnabled(true);
  
  }

und hier wird das Panel eingebaut :

Java:
  if(!(tmt instanceof ts_mrow_table1))
  {
  tmt = new ts_mrow_table1(ibdh.vDataDetail, ibdh.vDheader, 10, 30);//- ...,hgap,vgap
  }  
  
  //tmt.construct(ibdh.vDataDetail, ibdh.vDheader, 10, 30); //- ...,hgap,vgap
  //tmt.validate();
  tmt.setVisible(true);
  /*
  JPanel tpn = new JPanel();
  tpn.setSize(100, 200);
  tpn.setBackground(Color.red);
  */  
  //JScrollPane sp_list2 = new JScrollPane(tpn);
  JScrollPane sp_list2 = new JScrollPane(tmt);
  JScrollBar jvsb2 = sp_list2.getVerticalScrollBar();


  sp_list2.setPreferredSize(new Dimension(TBLWIN_WIDTH,TBLWIN_HEIGHT));  //- Hoehenverminderung bewirkt Verschiebung nach unten !
  
  split_pane_right.add(sp_list2);
  split_pane_right.add(Box.createVerticalGlue());
  split_pane_right.add(Box.createVerticalStrut(20));
  
  split_pane_left.setRightComponent(split_pane_right);

  split_pane_left.setLeftComponent(sp_list);
  split_pane_left.setDividerLocation(250);

  mask_pan.add("Center",split_pane_left);

  mask_pan.setVisible(true);

Wie im ersten Code-Block - auskommentiert - zu sehen ist, wollte ich eigentlich ein GridLayout befüllen,
aber da sehe ich nix, deswegen der Test mitm BorderLayout..
wie Sie sehen, sehen Sie nichts ..
außer dem grauen Hintergrund :-((
 
Zuletzt bearbeitet von einem Moderator:
super() muss nicht explizit aufgerufen werden, wenn die Ober Klasse einen Standart Konstruktor (Parameterlos) hat. Sollte die Oberklasse keinen Standart Konstruktor haben, sondern z.B. nur einen Konstruktor mit Parameter, MUSS in der abgeleiteten Klasse in dessen Konstruktor als erstes super(einParameter); aufgerufen werden.

EDIT: Aussage war vorher zu schwer zu verstehen. Habe sie etwas verständlicher geschrieben.
 

Zurück
Oben