verschiedene JPanel-Instanzen erstellen

Status
Nicht offen für weitere Antworten.

Lundner

Mitglied
Ich habe folgendes Problem:

Habe eine JPanel-Fläche Sitemap!

Auf dieser Sitemap sollen mehrere kleine Seiten(SiteThumbs) platziert werden können. Diese SiteThumbs sollen im Prinzip auch JPanels sein.

Die SiteThumbs werden während das Programm läuft erzeugt und enthalten einen Layer.

Soweit hab ich es auch geschafft. Bloss möchte ich diese SiteThumbs in das JPanel setzen passiert... nichts!

Ich hab diese SiteThumbs mal in ein JTabbedPanel gesetzt mit

Code:
JTabbedPanel1.add(SiteThumb)

das hat er auch wunderbar gemacht inkl. korrektem Label.

Aber ich bekomme es leider nicht hin das in ein normales JPanel zu packen :-/ .

Kann mir jemand helfen?
 

Lundner

Mitglied
Die (IntSiteThumb)

Code:
package sitemap;

public class IntSiteThumb extends javax.swing.JPanel {
    
    public IntSiteThumb() {
        initComponents();
    }
    
    public IntSiteThumb(IntSite s){
        initComponents();
        this.setThumbName(s.getSiteName());
    }
    
    public void setThumbName(String s){
        this.jSiteName.setText(s);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        jSiteName = new javax.swing.JLabel();

        jSiteName.setText("SiteName");

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jSiteName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jSiteName)
                .addContainerGap(25, Short.MAX_VALUE))
        );
    }// </editor-fold>                        
    
    
    // Variables declaration - do not modify                     
    private javax.swing.JLabel jSiteName;
    // End of variables declaration                   
    
}

Die SitemapGUI
Code:
package sitemap;

import javax.swing.JPanel;

public class SitemapGui extends javax.swing.JFrame {
    
    /** Creates new form SitemapGui */
    public SitemapGui() {
        initComponents();
    }
    
    public void initSitemap(Sitemap s){
        int i;
        //Durchlaufe alle Seiten
        for(i=0;i<s.sites.countSites();i++){
            //Erstelle Panel fuer jede Seite
            IntSiteThumb thumb = new IntSiteThumb(s.sites.getSite(i));   
            this.addIntSiteThumb(thumb);     
        }
    }
 
    public void addIntSiteThumb(IntSiteThumb thumb){
       this.jTabbed.addTab("Hello",thumb); //<-- DAS FUNKTIONIERT
       //this.JSitemap.add(thumb); <-- DAS FUNKTIONIERT NICHT
    }
    
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        jTabbed = new javax.swing.JTabbedPane();
        JSitemap = new javax.swing.JDesktopPane();
        jMenu = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jTabbed.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
        jTabbed.addTab("Sitemap", JSitemap);

        jMenu1.setText("Menu");
        jMenu.add(jMenu1);

        setJMenuBar(jMenu);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(jTabbed, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 846, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(jTabbed, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 613, Short.MAX_VALUE)
                .addContainerGap())
        );
        pack();
    }// </editor-fold>                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new SitemapGui().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JDesktopPane JSitemap;
    private javax.swing.JMenuBar jMenu;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JTabbedPane jTabbed;
    // End of variables declaration                   
    
}

Das ganze is mit Netbeans erstellt worden :-/
 

Wildcard

Top Contributor
Sorry, da kann ich nicht helfen da ich nichts von GUI-Buildern halte...
Liegt wohl am Layout
 

Lundner

Mitglied
kann ich gut verstehen ;-)

welches tool würdest du denn empfehlen! hab schon mit eclipse gearbeitet - fand ich auch sehr angenehm!
netbeans benutze ich weil meine gruppe das so beschlossen hat ... naaajaaa. Schätze mal das ist wirklich nicht das richtige um sich mit Java auseinanderzusetzen
 

André Uhres

Top Contributor
Ohne jetzt deinen Code geguckt zu haben würde ich dies empfehlen:
Versuch's mal mit validate().
Ausserdem muss der "SiteThumb" eine Grösse haben.
Hat Sitemap einen Layoutmanager, wie FlowLayout, musst du die "PreferredSize" setzen,
entweder mit "sitethumb.setPreferredSize(..)", oder durch Überschreiben von "getPreferredSize"
in der Klasse "SiteThumb".
 

Lundner

Mitglied
André Uhres hat gesagt.:
Versuch's mal mit validate().
Ausserdem muss der "SiteThumb" eine Grösse haben.
Hat Sitemap einen Layoutmanager, wie FlowLayout, musst du die "PreferredSize" setzen,
entweder mit "sitethumb.setPreferredSize(..)", oder durch Überschreiben von "getPreferredSize"
in der Klasse "SiteThumb".

validate(), setPreferredSize() und getPreferredSize haben leider nichts gebracht. (setPreferredSize hat aber die grösse verändert, habs mit System.out.println überprüft)

hmmm ... der komfort eines gui-builders ist zwar enorm aber wirklich verstehen tut man das was dahintersteht leider nicht ...
 

André Uhres

Top Contributor
Lundner hat gesagt.:
.. der komfort eines gui-builders ist zwar enorm aber wirklich verstehen tut man das was dahintersteht leider nicht ...
Allgemein gilt:
Eine IDE ist meist nur so gut wie sein Benutzer.
Deshalb wird Anfängern auch immer wieder empfohlen, erstmal keine zu benutzen.

Was jetzt speziell NetBeans betrifft:
Du bist nicht gezwungen den GroupLayout zu benutzen (oder Freelayout oder wie immer das Ding auch heissen mag).
Das benutz ich eh nie. NetBeans unterstützt auch sehr gut die "normalen" LayoutManger (BorderLayout, BoxLayout, CardLayout, FlowLayout, GridBagLayout, GridLayout). Versuch's mal damit :wink:

EDIT:
Lundner hat gesagt.:
..Habe eine JPanel-Fläche Sitemap!..
Ich seh jetzt in deinem Code, daß diese JPanel-Fläche eigentlich ein JDesktopPane ist.
Versuch's doch auch mal mit nem "richtigen" JPanel.
(JDesktopPane ist für JInternalFrames gedacht)
Code:
package sitemap;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class SitemapGui extends JFrame {
    private Sitemap jSitemap;
    private JMenuBar jMenubar;
    private JMenu jMenu1;
    private JMenuItem miAdd;
    private JTabbedPane jTabbed;
    public SitemapGui() {
        setSize(700,500);
        setLocationRelativeTo(null);
        initComponents();
        initSitemap((Sitemap) jSitemap);
    }
    public void initSitemap(Sitemap s){
        int i;
        //Durchlaufe alle Seiten
        for(i=0;i<3;i++){
            //Erstelle Panel fuer jede Seite
            IntSiteThumb thumb = new IntSiteThumb();
            this.addIntSiteThumb(thumb);
        }
    }
    public void addIntSiteThumb(IntSiteThumb thumb){
        jSitemap.add(thumb);
    }
    private void initComponents() {
        jTabbed = new JTabbedPane();
        jSitemap = new Sitemap();
        jMenubar = new JMenuBar();
        jMenu1 = new JMenu();
        miAdd = new JMenuItem("Add Site Thumb");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jTabbed.setTabPlacement(JTabbedPane.BOTTOM);
        jTabbed.addTab("Sitemap", jSitemap);
        jMenu1.setText("Menu");
        jMenu1.add(miAdd);
        jMenubar.add(jMenu1);
        setJMenuBar(jMenubar);
        add(jTabbed);
        miAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                miAddActionPerformed(e);
            }
        });
    }
    private void miAddActionPerformed(ActionEvent e){
        addIntSiteThumb(new IntSiteThumb());
    }
    public static void main(String args[]) {
        new SitemapGui().setVisible(true);
    }
}
class IntSiteThumb extends JPanel {
    public IntSiteThumb() {
        initComponents();
    }
    public Dimension getPreferredSize(){
        return new Dimension(100, 100);
    }
    public IntSiteThumb(IntSite s){
        initComponents();
        this.setThumbName(s.getSiteName());
    }
    public void setThumbName(String s){
        this.jSiteName.setText(s);
    }
    private void initComponents() {
        setBorder(BorderFactory.createLineBorder(Color.BLUE));
        jSiteName = new JLabel();
        jSiteName.setText("SiteName");
        add(jSiteName);
    }
    private JLabel jSiteName;
}
class IntSite extends JPanel{
    public String getSiteName() {
        return "Test";
    }
}
class Sitemap extends JPanel{
    public Sitemap(){
        setLayout(new FlowLayout(FlowLayout.LEFT));
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
I SWT Plattformunabhängig laden - verschiedene SWT .jar laden Java Basics - Anfänger-Themen 0
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
HoT verschiedene ArrayLists mit ähnlichem Namen in for-Schleife aufrufen Java Basics - Anfänger-Themen 3
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
M JavaFX- Verschiedene Stages Java Basics - Anfänger-Themen 1
B Get / Set - Methode für verschiedene Entities? (generisch) Java Basics - Anfänger-Themen 21
L Wie Input auf verschiedene Kriterien hin überprüfen? Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
N verschiedene Reihenfolgen ausgeben Java Basics - Anfänger-Themen 15
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
B String auseinander nehmen in verschiedene Teile Java Basics - Anfänger-Themen 9
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
T Java verschiedene Anweisungen Java Basics - Anfänger-Themen 23
W Verschiedene Bibliotheken in einer Anwendung? Java Basics - Anfänger-Themen 2
tuc Erste Schritte verschiedene objekte in einem feld speichern Java Basics - Anfänger-Themen 4
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
GoldenShadow Input/Output Verschiedene Versionen von Input/Output Java Basics - Anfänger-Themen 3
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
P Verschiedene Java Versionen nutzen Java Basics - Anfänger-Themen 6
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
S write(), weshalb verschiedene Ausgaben? Java Basics - Anfänger-Themen 4
E Erste Schritte Verschiedene Anfängerfragen (Rekursion, Terminierung, Schleife, etc.) Java Basics - Anfänger-Themen 5
I String trennen und verschiedene Wörter holen Java Basics - Anfänger-Themen 6
B Verschiedene Objekte in 2 dimensionalem Array speichern Java Basics - Anfänger-Themen 10
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
O Verschiedene Farben in einer GUI Java Basics - Anfänger-Themen 15
R Klassen Mehrere/Verschiedene Objekte umcasten Java Basics - Anfänger-Themen 8
N Vererbung Verschiedene Subclasses nach cast zur Superclass unterscheiden Java Basics - Anfänger-Themen 9
D Verschiedene Fragen zu meinem Projekt Java Basics - Anfänger-Themen 6
S textPane verschiedene formatierungen Java Basics - Anfänger-Themen 8
K Verschiedene JDK´s paralell nutzen? Java Basics - Anfänger-Themen 3
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
H 2 verschiedene Objekte in Liste mit Compareable sortieren Java Basics - Anfänger-Themen 7
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
N Verschiedene Klassen als Parameter elegant übergeben? Java Basics - Anfänger-Themen 4
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
G Umwandlung in verschiedene Zahlensysteme Java Basics - Anfänger-Themen 4
R Verschiedene Jar Versionen nutzen Java Basics - Anfänger-Themen 14
D Umgebungsvariable verschiedene Werte von JAVA_HOME? Java Basics - Anfänger-Themen 4
J verschiedene Anweisungen bei verschiedenen Zuständen Java Basics - Anfänger-Themen 9
F Info zwischen verschiedene Klassen austauschen Java Basics - Anfänger-Themen 4
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
Blindxantos Klassen in verschiedene Packages unterteilen Java Basics - Anfänger-Themen 2
F verschiedene Daten abspeichern Java Basics - Anfänger-Themen 13
N Verschiedene JFrames in einem JFrame anzeigen Java Basics - Anfänger-Themen 7
A Datentypen Verschiedene Threads synchronisieren Java Basics - Anfänger-Themen 3
D Mehrere verschiedene Farben pro fillRect Java Basics - Anfänger-Themen 3
M Verschiedene Werte in methoden Java Basics - Anfänger-Themen 3
K Verschiedene (Thread) Objekt-Positionen (int) in einem Array zusammenfassen Java Basics - Anfänger-Themen 3
J Verschiedene Rückgabetypen(int int char) Java Basics - Anfänger-Themen 10
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
J OOP verschiedene Objekttypen ablegen Java Basics - Anfänger-Themen 4
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
capgeti Verschiedene Rückgabetypen ohne Typecast möglich? Java Basics - Anfänger-Themen 7
S Verschiedene Arrays über Index aufrufen Java Basics - Anfänger-Themen 5
Developer_X in JEditorPane verschiedene Farben, verwenden Java Basics - Anfänger-Themen 7
C verschiedene Label auf Knopfdruck abrufen Java Basics - Anfänger-Themen 4
L Verschiedene Fonts für verschiedene Dialogelemente Java Basics - Anfänger-Themen 2
G Verschiedene Packages Java Basics - Anfänger-Themen 3
G Daten in verschiedene Listen schreiben Java Basics - Anfänger-Themen 5
C Zustandsanzeige durch verschiedene Klassen Java Basics - Anfänger-Themen 4
S verschiedene Versionen Java Basics - Anfänger-Themen 2
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
T verschiedene Anfängerfragen Java Basics - Anfänger-Themen 20
J Verschiedene Ausgaben bei gleichen Ausdrücken (Typecasting?) Java Basics - Anfänger-Themen 5
N Verschiedene Input/Output Klassen Java Basics - Anfänger-Themen 3
G verschiedene datentypen in arraylist Java Basics - Anfänger-Themen 14
L 2 verschiedene Typen in einer Tabelle ablegen Java Basics - Anfänger-Themen 18
N Problem mit Tastatureingaben für verschiedene Datentypen Java Basics - Anfänger-Themen 3
L verschiedene formuare in einem fenster öffnen Java Basics - Anfänger-Themen 8
I Array für verschiedene Datentypen? Java Basics - Anfänger-Themen 5
R verschiedene dateitypen öffnen Java Basics - Anfänger-Themen 5
L verschiedene zeichen einlesen Java Basics - Anfänger-Themen 5
C 2 verschiedene Tables = 2 verschiedene Renderer ? Java Basics - Anfänger-Themen 5
S mit Buttons verschiedene Bilder laden Java Basics - Anfänger-Themen 4
S klassen in verschiedene Dateien Java Basics - Anfänger-Themen 5
3 Verschiedene Fragen (bin neu hier) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben