Probleme mit Bild einfügen

Status
Nicht offen für weitere Antworten.

I-Love-Java

Mitglied
Hallo zusammen!
Ich habe ein Problem auf meiner First_1.java
Es zeigt mir mein Icon nicht an, zudem wird das 1. Fenster des StartGUI.java nicht geschlossen.
Das Programm soll von StartGUI.java nach dem "klicken" zur GUI Fenster_1.java wechseln.
Kann mir jemand weiterhelfen bzw Tipps geben?

Java:
/*
 * Created on 06.05.2009
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Nesim
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class StartGUI extends JFrame {

	private JButton button1;

	StartGUI() {
		super("Fit für VWL");

		getContentPane().setLayout(new BorderLayout());
		getContentPane().setBackground(Color.WHITE);

		button1 = new JButton("LOGIN");

		JPanel firstPanel = new JPanel(new FlowLayout());
		JPanel secondPanel = new JPanel(new FlowLayout());
		JPanel thirdPanel = new JPanel(new FlowLayout());

		firstPanel.setOpaque(false);
		secondPanel.setOpaque(false);
		thirdPanel.setOpaque(false);

		thirdPanel.add(button1);

		JLabel label = new JLabel();

		ImageIcon icon = new ImageIcon("LOGO.jpg");
		label.setIcon(icon);

		secondPanel.add(label);

		add(firstPanel, BorderLayout.NORTH);
		add(secondPanel, BorderLayout.CENTER);
		add(thirdPanel, BorderLayout.SOUTH);
		
		// Anknüpfen des Buttons
		
		/*
		button1 = new JButton ("START");
		button1.setFont(new Font("Comic Sans", Font.BOLD, 25));
		button1.setBackground(WHITE);
		*/
		
		button1.addActionListener(new ActionListener ()
		
		{
			
			public void actionPerformed (ActionEvent e)
			{
				new First_1();
				dispose();
				
			}
			
		});

		// Ein Image in d. Button einbringen
		// button1.setIcon(new ImageIcon("checkbox_icon.png"));

		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {

		StartGUI fenster = new StartGUI();
		fenster.setSize(800, 600);
		fenster.setLocation(0, 0);
		fenster.setVisible(true);

	}

}

Java:
/**
 * @param args
 */

import java.awt.*;

import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class First_1 extends JFrame {

	private JLabel title, imageLabel;
	private JButton start;
	private JPanel panel1, panel2, panel3;
	private ImageIcon forward;

	First_1() {
		super();
		getContentPane().setLayout(new BorderLayout());
		getContentPane().setBackground(Color.WHITE);
		
		pack();
		setSize(800, 600);
		setLocation (0,0);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// Panels

		panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 50));
		panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER, 60, 50));
		panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER, 110, 50));
		
		add(panel1, BorderLayout.WEST);
		add(panel2, BorderLayout.EAST);
		add(panel3, BorderLayout.SOUTH);
		
		
		//Panel 1
		ImageIcon icon = new ImageIcon (ClassLoader.getSystemResource ("LOGO.jpg"));
		imageLabel = new JLabel ();
		imageLabel.setIcon(icon);
		
		panel1.setSize(350,600);
		
		
		panel1.add(imageLabel);
		
		
		//Panel 2
		
		
		

	}

	public static void main(String[] args) {

		new First_1();
		
	}

}

Danke im Vorraus
 
Zuletzt bearbeitet von einem Moderator:
Generell kann man testen, ob die Ressource überhaupt verfügbar ist:

Code:
if(ClassLoader.getSystemResource ("LOGO.jpg")==null){
System.out.println("Ressource nicht gefunden...");
}

Dies bedeutet, dass logo.jpg im package resources liegt:
Code:
imageLabel.setIcon(new ImageIcon(getClass().getResource("/resources/logo.jpg")));
 
Sorry, die Antwort bezog sich lediglich auf das Logo. Hab den Rest vergessen, zu beschreiben. 🙂

Du hast vergessen, das JPanel dem Container des JFrames zu übergeben und den Frame dann mit setVisible(true);
sichtbar zu machen.

Das Beste ist, wenn man nur ein JPanel dem Container übergibt (und nicht mit add(..) auf den JFrame losgeht). Auf dieses JPanel kann man dann einen LayoutManager anwendet.

Code:
panel1.setSize(350,600);
panel1.add(imageLabel); // bzw. layout anlegen und die anderen panels hinzufügen

getContentPane().add(panel1);  // das wäre jetzt das Haupt-Panel
pack();
setVisible(true);
 
Zuletzt bearbeitet:
Das Beste ist, wenn man nur ein JPanel dem Container übergibt (und nicht mit add(..) auf den JFrame losgeht). Auf dieses JPanel kann man dann einen LayoutManager anwendet.

Code:
getContentPane().add(panel1);  // das wäre jetzt das Haupt-Panel
Warum das? Dann kannst Du gleich das ContentPane setzen:
Java:
setContentPane(panel1);
Das ContentPane gehört dem Entwickler. Kein UI installiert irgendetwas auf dem ContentPane.

Ebenius
 
Warum das? Dann kannst Du gleich das ContentPane setzen:
Java:
setContentPane(panel1);
Das ContentPane gehört dem Entwickler. Kein UI installiert irgendetwas auf dem ContentPane.

Ebenius

Ja, schon richtig. Um den originalen Container nicht zu ersetzen, habe ich mir das so angewöhnt. Ist aber nicht zwingend notwendig, ihn zu erhalten.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben