Neues Frame öffnen und Bild implementieren

Hallo,

ich würde gerne in meinem Hauptframe auf z.B. ein Button klicken und danach soll sich ein weiteres Frame (so dass man 2 Fenster hat) öffnen.

  • Gibt es eine Möglichkeit ein solches Frame (mit vorerst einem JTappedPane zu erstellen? Ich würde gerne keine Leiste/Bar (ohne minimieren, maximieren und beenden) oben sehen.
  • Ich würde gerne ein Bild einfügen. Das klappt aber noch nicht ganz
        // Tab hinzufügen
        pane.addTab("Tab", null);
        // Tab anpassen
        JLabel tab1 = new JLabel("Tab 1", new ImageIcon("images/menu/img1.png"), JLabel.CENTER);
        tab1.setVerticalTextPosition(JLabel.BOTTOM);
        tab1.setHorizontalTextPosition(JLabel.CENTER);
        pane.setTabComponentAt(0, tab1);
        add(pane);
        setSize(300, 300);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);```

[QUOTE=izloh]

  • Gibt es eine Möglichkeit ein solches Frame (mit vorerst einem JTappedPane zu erstellen? Ich würde gerne keine Leiste/Bar (ohne minimieren, maximieren und beenden) oben sehen.[/QUOTE]

bekommst du mit setUndecorated(true);

Ein Bild oder Titel auf das Fenster kannst du dann nicht mehr setzen, der Balken oben ist dann ja weg.

Was klappt mit dem Bild nicht so ganz?

  1. Warum ein zweiter Frame? Ginge nicht ein JDialog
  2. Mit setUndecorated(…) kannst Du die Titelleiste entfernen
  3. Was klappt noch nicht so ganz?

Hallo,

ich versuche z. Z. mit dem Programmstart 2 Fenster zu öffnen.

            public void run() {
            	DataSetCompareGUI frame = new DataSetCompareGUI();
            	DataSetCompareGUI frame1 = new DataSetCompareGUI();
            	
            	frame.setVisible(true);
            	frame.setTitle("test1");
            	
                Image image = null;
                try {
                    // Read from a file
                    File sourceimage = new File("./figures/test.png");
                    image = ImageIO.read(sourceimage);
                } catch (IOException e) {
                }
                frame.setIconImage(image);
                frame.pack();
                frame.setVisible(true);
                
            	frame1.setVisible(true);
            	frame1.setTitle("test2");
            }
        });```

1. Macht er 2 mal das gleiche Fenster auf :(
2. Wenn ich ein Fenster schließe, schließt er beide.

ah schneller gelöst als gedacht :wink: sorry!

            	JDialog frame1 = new JDialog();```

Hallo nochmals,

ich habe jetzt ein neues Frame erzeugen können und 4 Tabs erstellt.

    	JTabbedPane pane = new JTabbedPane();
        // Tab hinzufügen
    	pane.addTab("Tab1", null);
    	pane.addTab("Tab2", null);
    	pane.addTab("Tab3", null);
    	pane.addTab("Tab4", null);
        
    	frame1.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    	frame1.setTitle("Image Loading Demo");
    	frame1.setSize(500, 400);

        Image image = null;
        try {
            // Read from a file
            File sourceimage = new File("./figures/test.png");
            image = ImageIO.read(sourceimage);
        } catch (IOException e) {
        }
        frame1.add(new JLabel(new ImageIcon(image)));
    	
    	frame1.pack();
    	frame1.add(pane);
    	frame1.setLocationByPlatform(true);
    	frame1.setVisible(true);

    }```

-Wie kann ich jetzt jedem Tab ein Image zuweisen? Ich würde gerne auf jedem Tab ein anderes Bild haben!
Jedoch setzt er z. Z. das Bild einfach oben links (x= 0, y= 0) über die alle Tabs.

- frame1.setSize(500, 400); funktioniert leider nicht. Das Fenster ist immer ganz klein.

[QUOTE=izloh]-Wie kann ich jetzt jedem Tab ein Image zuweisen? Ich würde gerne auf jedem Tab ein anderes Bild haben!
Jedoch setzt er z. Z. das Bild einfach oben links (x= 0, y= 0) über die alle Tabs.[/QUOTE]
Was erwartest Du wenn Du ein Icon in ein Label steckst und dieses ganz oben positionierst. Die addTab Methode bietet eine Möglichkeit das Icon eines Tabs zu setzen. Beispiele/Erläuterung:
http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html

Du rufst ja ach pack auf, da kannst Du die Größe setzen wie Du willst. pack berechnet die benötigte Größe und weist diese dem Frame zu.

probiere frame.setPreferredSize(...)

    	JTabbedPane pane = new JTabbedPane();
       
    	frame1.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    	frame1.setTitle("Image Loading Demo");
    	frame1.setSize(500, 400);

        //Image image = null;
        // Read from a file
		// File sourceimage = new File("./figures/test.png");
		// image = ImageIO.read(sourceimage);
		Icon icon = new ImageIcon("./figures/test.png");
		// Tab hinzufügen
		pane.addTab("Tab1", icon, new JLabel("This is tab 2"));
		//pane.addTab("Tab2", null);
		//pane.addTab("Tab3", null);
		//pane.addTab("Tab4", null);
        //frame1.add(new JLabel(new ImageIcon(image)));
    	
    	frame1.add(pane);
    	frame1.setLocationByPlatform(true);
    	frame1.setVisible(true);
    }```

Das funktioniert alles soweit! Nur möchte ich nicht wie oben programmiert das Icon direkt im Tab haben, sondern in den Feldern darunter! 

Also wie eine Excel sheet (Nur im JDialog in meinem Beispiel) zb. Man hat die Reiter Tab1, Tab2, etc. und dann in den Zellen soll jeweils ein Bild sein!

willst du jetzt in jedem Tab eine Tabelle wie in Excel haben?
Dann schau dir mal die [JAPI]JTable [/JAPI]an.

Oder willst du in jedem Tab nur ein Bild haben?
Dann setz das Bild auf ein Label und das Label auf das Panel des Tabs.