Bild in GUI

recess

Mitglied
Hallo, wir besprechen zurzeit Swing/GUI/JLabel ect.
Ich möchte einen Adventskalender programmieren, wo rechts 24 Türchen (4x6) und links daneben ein Bild zu sehen ist
Die 24 Türchen sollen als JButtons realisiert werden und dann mit Hilfe von ActionListener überprüft werden.
Soll dann in etwa so aussehen:

attachment.php






Mein derzeitiger Stand:

Java:
import javax.swing.JFrame;


public class Test1 {

	public static void main (String [] args){

		JFrame jf= new La();
		
		
	}
}


Java:
package Main;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;







public class La extends JFrame {

	JLabel text;
	JButton button;
	ImageIcon icon1;
	ImageIcon icon2;


	public La(){
		setVisible(true);
		setSize(500,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setLayout(null);


		for (int z=0; z<6;z++){


			for (int i=1; i<5;i++){
				int zahl= i+(4*z);
				button = new JButton(zahl+"");
				button.setBounds(230+(i*50),(35*(z+1)),50,25);
				add(button);
			}
		}
		icon1 = new ImageIcon(getClass().getResource("src/Main/weihnachten6.png"));
		text= new JLabel(icon1);
		add(text);
	}

}
Allerdings werden die 24 Türchen irg wie zu weit auseinander ausgegeben und das Bild wird auch nicht angezeigt. Kann mir jemand sagen , was ich falsch mache? Is die Bildimplementierung so richtig?

Sollte ich am besten ein BorderLayout machen?
Wie geht das genau? Das was ich dazu gefunden ahbe ist:
Java:
String[] adjust = { BorderLayout.NORTH,
BorderLayout.EAST,
BorderLayout.SOUTH,
BorderLayout.WEST,
BorderLayout.CENTER};
for (int i = 0; i < component.length; ++i) {
add(adjust[i % adjust.length], component[i]);
}
Weiß aber nicht wie ich das auf meinen Fall anwenden soll :/
 

Anhänge

  • 3aqsajsi.jpg
    3aqsajsi.jpg
    76,2 KB · Aufrufe: 134
Zuletzt bearbeitet von einem Moderator:

Fab1

Top Contributor
Hi,

es wäre wohl besser, wenn du hier auf das absolute Layout verzichten würdest. Ich denke du sparst dir dabei sehr viel Arbeit.

Für die Kästchen würde sich beispielsweise sehr gut das GridLayout eignen. Hierbei hat jedes Feld im Gridlayout die gleiche Größe, was bei dir ja wohl der Fall wäre.

Das Bild sieht man nicht, weil für das Bild also dem JLabel text keine Koordinaten oder Größe festgelegt hast.
Aber wenn du einen Layoutmanager verwenden würdest, dann hättest auch auch diese Problem nicht.

Du hast ja das BorderLayout angesprochen. Ich bin der Meinung, dass man mit diesem LM schon die meisten Sachen realisieren kann, da man den Layoutmanager natürlich auch verschachteln kann. Also am besten schaust du dir einfach mal ein paar Layoutmanager an und die Beispiele dazu und wenn dann noch ein paar Fragen auftreten, dann weißt du ja wo du uns findest.
 

L-ectron-X

Gesperrter Benutzer
Java:
import java.awt.*;
import java.net.*;
import java.text.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;

public class Advent implements ActionListener {

    private JButton doorButton;
    private JLabel label;

    public Advent(){
        JFrame frame = new JFrame("Adventskalender");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        DateFormat formatter = new SimpleDateFormat("EEEE 'der' d. MMMM yyyy");

        JPanel calendarPanel = new JPanel(new GridLayout(0, 4, 2, 2));

        for (int i = 0; i < 24; i++){
            doorButton = new JButton(String.valueOf(i+1));
            doorButton.setFocusPainted(false);
            doorButton.setFocusable(false);
            doorButton.addActionListener(this);
            calendarPanel.add(doorButton);
        }

        Icon icon = null;
        try {
            icon = new ImageIcon(new URL("http://www.animierte-gifs.net/data/media/359/animierte-weihnachtsmann-bilder-101.gif"));
        } 
        catch(Exception e) {
            e.printStackTrace();
        }
        label = new JLabel(icon);
        label.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
        
        JLabel dateLabel = new JLabel("Heute ist "+formatter.format(new Date()));
        dateLabel.setHorizontalAlignment(JLabel.CENTER);
        dateLabel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
        
        frame.add(label, BorderLayout.CENTER);
        frame.add(calendarPanel, BorderLayout.EAST);
        frame.add(dateLabel, BorderLayout.SOUTH);
        
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    
    public void actionPerformed(ActionEvent e) {
        JButton source = (JButton)e.getSource();
        if(source.getText().equals("1")) {
            System.out.println("1");
        }
        else if(source.getText().equals("2")) {
            System.out.println("2");
        }
        //usw.
    }
    
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Advent advent = new Advent();
            }
        });
    }
}
 

Anhänge

  • Advent.png
    Advent.png
    32,4 KB · Aufrufe: 73

marle

Mitglied
Hallo,

habe auch einen Adventskalender programmiert und in Eclipse tut alles wunderbar. Jetzt möchte ich den aber weitergeben, sprich so haben damit er auf Rechnern ohne Eclipse o. ä. läuft und damit nicht irgendwelche Laien was am Code ändern und danach funktioniert nichts mehr ... (ihr kennt das sicher :) )

Habe schon etwas geforscht und gefunden, dass ich dafür eine .jar Datei erstellen muss. Das habe ich auch hinbekommen, allerdings fehlen da dann die Bilder. Weiß jemand von euch, wie ich das hinbekomme, dass die ebenfalls in der .jar Datei sich befinden?

Hab es schon versucht, wenn die Bild-Dateien im src Ordner des Projektes lagen oder eben einfach nur im Projektorder (also da wo man bin und src eben sieht - auf der Ebene).
 

Volvagia

Top Contributor
Musst du beim Export angeben. Bei einer Runnable Jar sollte er das automatisch machen, bei einen Jar-Export kannst du auswählen was du reinwillst. Dazu musst du die Dateien ins selbe Verzeichnis wie die *.java-Dateien legen um relativ dazu zu laden, und (sofern du es nicht per Eclipse gemacht hast) wärend das Programm nicht läuft das Package im Explorer markieren und F5 drücken, damit er weiß dass sich was geändert hat. Dann sollte er dir die Bilder auch im Explorer anzeigen. (Außer du hast es natürlich ausgeblendet.)

Natürlich musst du dann auch eine Lademethode benutzen, die die Bilder aus der Jar läd. Falls du eine andere verwendest (z. B. ImageIcon mit String-Parameter) müssen die Bilder direkt im Projektverzeichnis und im Verzeichnis der Jar liegen.
 

marle

Mitglied
Hallo,

vielen Dank für deine Antwort. Also das mit der Runnable Jar habe ich schon versucht und alle möglichen Varianten - leider alle ohne Erfolg.

Was für eine Lademöglichkeit müsste ich verwenden damit es funktioniern könnte? Bisher mache ich es so:
Java:
labP = new JLabel(new ImageIcon ("advent4.jpg"));
hier liegt das Bild auf der Ebene wo man auch die "bin" und "src" Ordner sieht. Sprich direkt im Order des JavaProjekts.

Variante 2:
Java:
labP = new JLabel(new ImageIcon ("src/weihnachtszeit.jpg"));
hier liegt das Bild, wie ersichtlich im src-Ordner.

Ach ja hab die Variable natürlich vorher initialisiert mit JLabel labP = new JLabel();
Hab die zwei Varianten oben in der switch-case drin, damit ich verschiedene Bilder habe - je nach Tag...

Habe ich die Bilder richtig gespeichert oder muss ich die irgendwie verschieben? Also in Eclipse erscheinen sie nirgends.
 

marle

Mitglied
Sorry dumme Frage jetzt, aber woher weiß ich wo der jar-Ordner erstellt wird? Der ist ja am Anfang noch nicht vorhanden.

Weiß nicht ob das einen Unterschied bei dem Export macht, aber ich habe einen Mac mit Mountain Lion drauf (also Mac OS X 10.8.2)
 

Volvagia

Top Contributor
Die musst doch eben mitgeben. Bei vielen Programmen hast du ja auch nicht nur die ausführbare Datei sondern viele andere Ressourcen. (Wobei ich einen Mac noch nie verwendet habe)
Alternativ lädst du direkt aus der jar über den ClassLoader:

Java:
new JLabel(new ImageIcon(getClass().getResource("advent4.jpg")));

In diesem Fall wird relativ zur Klasse geladen.
 

marle

Mitglied
Hab deinen Code eingefügt aber jetzt funktioniert gar nichts mehr. Bekomme eine NullPointerException - was wahrscheinlich daran liegt, dass der Pfad nicht gefunden wurde.
 

Volvagia

Top Contributor
Liegt die Datei im selben Verzeichnis, wie die java-Datei? Wenn du im Package Explorer aktualisierst sollte Eclipse es von dort automatisch zu den class-Dateien kopieren.
 

marle

Mitglied
Vielen vielen Dank, jetzt funktioniert es. Das Problem war wohl, dass ich die Bilder nicht in Eclipse sah und somit konnte er die auch nicht mit dazupacken. Das refresh wirkt wahre Wunder :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
J Bild loopen Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
C Erste Schritte Bild holen und speichern Java Basics - Anfänger-Themen 1
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
F Bild in ein Runnable Jar File packen (eclipse) Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
J Ganzes Bild Java Basics - Anfänger-Themen 4
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
I Bild aus Bereich laden Java Basics - Anfänger-Themen 3
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
Sogomn Bild will sich nicht skalieren lassen Java Basics - Anfänger-Themen 1
P Ein Bild für GUI (Java-Editor) Java Basics - Anfänger-Themen 4
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
P Bild bearbeiten Java Basics - Anfänger-Themen 9
Z Datenmatrix in Bild verwandeln Java Basics - Anfänger-Themen 4
C Bild verschwinden lassen Java Basics - Anfänger-Themen 7
S Bild Icon aus ID3Tag auslesen Java Basics - Anfänger-Themen 4
E Bild vom FileChooser aus via ImageIcon in DB schreiben Java Basics - Anfänger-Themen 16
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
O Auflösung einer Bild-Datei bekommen ohne sie herunterzuladen?? Java Basics - Anfänger-Themen 7
L Bild-Datein "zuschneiden" Java Basics - Anfänger-Themen 11
O DeviantArt-Bild Konverter: Fehler.. Java Basics - Anfänger-Themen 16
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
M Bild einbinden Java Basics - Anfänger-Themen 7
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
T Bild laden Java Basics - Anfänger-Themen 7
D Eclipse Juno zeigt Bild nicht bei Run Java Basics - Anfänger-Themen 3
Kenan89 Bild mit jar öffnen Java Basics - Anfänger-Themen 4
S Problem bei Bewegung von einem Bild! Java Basics - Anfänger-Themen 2
J Bild mit transparenter Farbe Java Basics - Anfänger-Themen 10
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
J Bild einfügen Java Basics - Anfänger-Themen 3
T ASCII Art von Bild erstellen. Java Basics - Anfänger-Themen 32
E Bild OS-unabhängig einbinden mit URL Java Basics - Anfänger-Themen 4
A BufferedImage in Android einbinden - Bild spiegeln -wie? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben