LayoutManager Main layout auf andere Class Dateien verweisen?

Doppelherz

Mitglied
Moin Leute,
finde grad echt gar nicht einen Beispielcode zu folgendem Befehl und hoffe auf eure Hilfe :)

Ich möchte ein Layout basteln mit North, West und so. Und in mein North wollte ich ein Logo einfügen. Komplizierterweise möchte ich das nicht in meine Layoutdatei sondern in eine externe Javadatei auslegen und darauf zugreifen. Wie macht man sowas denn geschickt?
 

Foermchen82

Top Contributor
Was hast du vor?? Was ist denn eine Layout-Datei. Und Layouts werden auch nicht auf Classes angewendet.

Wenn du einen ähnlichen Aufbau in allen Panels willst (z.b. immer oben ein Logo), dann mach dir eine Abstrakte Klasse von der dann alle Panels erben müssen.
 

Doppelherz

Mitglied
Öhm, ich kann das nur kompliziert erklären wie ich mir das gedacht habe. Ich hab in eclipse eine .Java Klasse, in der die Main ist. Diese Datei soll nur für das grobe Layout und das Schließen über das X in der Ecke gut sein. Und mit groben Layout meine ich dieses Borderlayout mit North, Center usw. Und in den einzelnen Panels sollen andere .Java Dateien aufgerufen werden. West soll zum beispiel eine Navigation Java Datei aufrufen, North eine Java Datei, in der einfach nur ein Jpeg als Background anzeigt. Und so soll dann aus dem layout über andere Dateien mein mehr oder minder schönes Progrämmchen gestaltet werden :)

Java:
contentPane.setLayout(new BorderLayout());
	  
// Hier fehlt wohl was	  
	  
	  contentPane.add(LOGO, BorderLayout.NORTH);
	  contentPane.add(NAVIGATION, BorderLayout.WEST);
	  contentPane.add(MAIN, BorderLayout.CENTER);
	  
	  setContentPane(contentPane);
 
Zuletzt bearbeitet:

Foermchen82

Top Contributor
Dann mach doch einfach eine Klasse die das Layout erstellt und die packst du in ein JFrame.

willst du zur Laufzeit den MAIN-Part austauschen?? wenn nein, mach wie ich es dir gesagt habe. Du machst eine abstrakte Klasse, die das Layout macht und die instanzierst du dann und setzt den MAIN-Part
 

Doppelherz

Mitglied
Hab die Klasse, die das Layout erstellt, gebastelt und rufe sie über JFrame auf. Nur weiß ich halt nicht, wie ich in dem layout auf andere Klassen aus anderen Dateien zugreifen kann :( Ich zeig einfach mal den gesamten Code:

So sieht meine GUI.java aus:
Java:
package eShop.local.ui.gui;

import java.awt.*;
import java.io.IOException;
import java.awt.Window;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class eShopGUI extends JFrame {

public eShopGUI() {
	  super("Musicstore");
	  
	  JPanel contentPane = new JPanel();
	  
	  contentPane.setLayout(new BorderLayout());
	  
// LOGO verweist auf eine Logo.java im selben Ordner ( Zeigt ein Bild )
// NAVIGATION verweist auf eine Navi.java im selben Ordner ( Zeigt eine Navigation )
// CENTER verweist auf eine Center.java im selben Ordner ( Zeigt sämtlichen Krams )

	  contentPane.add(LOGO, BorderLayout.NORTH);
	  contentPane.add(NAVIGATION, BorderLayout.WEST);
	  contentPane.add(CENTER, BorderLayout.CENTER);
	  
	  setContentPane(contentPane);  
  }
  
  public static void main (String[] args){
	  JFrame rahmen = new eShopGUI();
	  WindowListener listener = new WindowAdapter() {
		  public void windowClosing(WindowEvent we){
			  System.exit(0);
		  }
	  };
	  
	  rahmen.addWindowListener(listener);
	  rahmen.setSize(600, 800);
	  rahmen.setVisible(true);
  }
  
}

und so sieht bisher meine Logo.java aus:
Java:
package eShop.local.ui.gui;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class Logo extends JFrame{
private static final String FILENAME = "logo.jpg";

@SuppressWarnings("deprecation")
public static void main(String args[]) { new Logo().show();}
private static final int sizex = 600;
private static final int sizey = 108;

public Logo(){
try {
Image im = ImageIO.read(new File(FILENAME));
ImagePanel panel = new ImagePanel(im);
JScrollPane pane = new JScrollPane(panel);
pane.setBounds(0,0,sizex,sizey);
getContentPane().add(pane);
this.setSize(sizex,sizey);
} catch (IOException e) { 
	System.out.println("musicstore Logo kann nicht angezeigt werden. Logo-Datei nicht gefunden!");
	}
}

public class ImagePanel extends JPanel {

private Image im;
public ImagePanel(Image im) { super(); this.im = im; }
public void paint(Graphics g) { if (im != null) { g.drawImage
(im,0,0,this); } }
public void setBounds() { setBounds(0,0,im.getWidth
(this),im.getHeight(this)); }
}
}
 

Foermchen82

Top Contributor
Deine Klasse Logo als JFrame ist überflüssig. Nimm einfach nur das ImagePanel und packe es in den NORTH deines eShopGUI-JFrame.

Was genau du mit deiner Layout-Klasse meinst kann ich immer noch nicht ganz nachvollziehen!!
 

Michael...

Top Contributor
Dass Logo von JFrame erbt macht in dem Zusammenhang keinen Sinn. Entweder Logo direkt von JPanel oder JScrollPane (?? willst da wirklich eine ScrollPane) erben lassen oder in der Klasse eine Methode implementieren, die das imagePanel oder die ScrollPane zurück gibt.

Je nach dem, dann in Deiner GUI Klasse ein Objekt von Logo erzeugen und entweder dieses Objekt oder das was die Methode zurückgibt in das Layout einfügen.

Ansonsten:
- bei Swing Komponenten überschreibt man die paintComponent(Graphics g) anstelle der paint(Graphics g)
- ein bisschen was zu LayoutManagern und Oberflächenprogrammieren lesen
 

Foermchen82

Top Contributor
Wo genau liegt jetzt dein Problem?

Du hast eine Datei ImagePanel.java die nicht weiter ist als JPanel wo du das Image lädst und zeichnest.
Dann hast du noch dein Gui.java wo du im konstruktor oder sonstwo in den North-Bereich eine Instanz deines ImagePanels legst. Fertig!
 

Michael...

Top Contributor
Ich weiß aber nicht wie
Das ist aber eine Grundlage, die man beherrschen sollte, bevor man mit GUI Programmierung anfängt. ;-)
Hier mal ein zwei Bsp Klassen/Dateien. Hab's allerdings nicht getestet, ob das so funktioniert wie ich mir's gedacht habe. Aber es zeigt wie man in einer Klasse ein Objekt einer anderen Klasse erzeugt.
Java:
import ...
public class GUI extends JFrame {
	MyComponent comp;
	
	public GUI() {
		comp = new MyComponent();
		comp.setPreferredSize(new Dimension(123, 30));
		this.getContentPane().add(comp, BorderLayout.NORTH);
	}
	
	public static void main(String[] s) {
		GUI gui = new GUI();
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		gui.setBounds(0, 0, 200, 200);
		gui.setLocationRelativeTo(null);
		gui.setVisible(true);
	}
}
Java:
import...
public class MyComponent extends JPanel {
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.RED);
		g.fillRect(5, 5, 100, 20);
	}
}
 

Doppelherz

Mitglied
Ja klasse, nach und nach wird das hier was. Und ja, es sind sicherlich die Grundkenntnisse bei GUI, aber das ist auch die erste, die ich baue ^^ Nun meckert der aber bei dem zweiten Punkt rum, wenn ich die Navigation über diesen Weg einbauen will:

Java:
          logo = new Logo();
	  logo.setPreferredSize(new Dimension(800, 100));
	  this.add(logo, BorderLayout.NORTH);
	  navi = new Navi();
	  this.add(navi, BorderLayout.WEST);
bei this.add wird das add rot :(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
T Szene wechselen JavaFX mit If in Main Class AWT, Swing, JavaFX & SWT 2
T Fxbefehle aus Main umwandeln in @FXML AWT, Swing, JavaFX & SWT 21
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
L Editor does not contain a main type AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
K JavaFX Titel und Fenstergröße aus Main.java übergeben AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
Paul15 ActionListen auf Object in main AWT, Swing, JavaFX & SWT 7
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4
T Java Swing Main GUI Thread AWT, Swing, JavaFX & SWT 3
H Could not find main class: ... AWT, Swing, JavaFX & SWT 10
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
A Applet main class aus anderer main class aufrufen AWT, Swing, JavaFX & SWT 15
C Grafik von main aus aufrufen AWT, Swing, JavaFX & SWT 13
S Visual Editor mit main Methode AWT, Swing, JavaFX & SWT 3
Y Swing Problem mit Main Methode AWT, Swing, JavaFX & SWT 8
T Frame in Main Starten AWT, Swing, JavaFX & SWT 5
M Main Frame schließen und neue Klasse aufrufen? AWT, Swing, JavaFX & SWT 2
Semox Warum baut man eine GUI nicht in der main-Methode? AWT, Swing, JavaFX & SWT 16
A Event von Login zu Main klasse AWT, Swing, JavaFX & SWT 2
R problem mit bildanzeige in applet und main AWT, Swing, JavaFX & SWT 2
A JFrame + JTable + main-Methode + Programmsteuerung AWT, Swing, JavaFX & SWT 18
H Es wird nach "main" verlangt AWT, Swing, JavaFX & SWT 9
A Paint und Main AWT, Swing, JavaFX & SWT 4
L invokeLater in der main-Methode AWT, Swing, JavaFX & SWT 6
N Swing startet nicht - java.lang.NoSuchMethodError: main AWT, Swing, JavaFX & SWT 8
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben