Eigene Component anordnen

LatinFavourite

Bekanntes Mitglied
Guten Tag,

ich arbeite seit einer langen Zeit wieder mit Java und versuche mich gerade an einer eigenenen Komponente. Diese möchte ich nun nebeneinander und untereinander anordnen. Die getPreferredSize() Methode ist soweit überschrieben. Aber ordne ich die Kacheln ich nun mithilfe des GridLayout an, entsteht ein riesiger vertikaler Abstand zwischen diesen. Bei normalen JButton funktioniert das. Was muss ich an meiner eigenen Komponente ändern, um ein ähnliches Verhalten, wie auf dem Bild oder bei vordefinitieren Komponentnen, zu schaffen.

Vielen Dank, für jegliche Hilfe.
 

Anhänge

  • buttons.PNG
    buttons.PNG
    3,1 KB · Aufrufe: 33

Harry Kane

Top Contributor
Ich sehe an dem Bild nichts von einem "riesigen vertikalen Abstand". Die 6 Kacheln sind dicht an dicht. Oder sind das JButtons?
In Abwesenheit von jeglichem Code muss ich raten: Du hast die paintComponent überschrieben, und berücksichtigst dabei nicht, dass die aktuelle Größe nicht der preferredSize entspricht.
 

LatinFavourite

Bekanntes Mitglied
Nein, das ist ja auch das Ergebnis, welches ich versuche zu erreichen.


Java:
public class TileComponent extends JComponent {
  
    private BufferedImage texture;
    private String name;
    private String type;
    private int id;
    private Dimension dim;
  

  
  
    public TileComponent(BufferedImage texture){
        this.texture = texture;
        dim = new Dimension(32, 32);
    }
  
    public Dimension getPreferredSize(){
        return dim;
    }
  
    public Dimension getMinimumSize(){      
        return dim;
    }
  
    protected void paintComponent(Graphics g){
        g.drawImage(texture, 0, 0, dim.width, dim.height, null);
    }
  
  

}
 

Harry Kane

Top Contributor
Wie genau meinst du das? Direkt von dem Image?
Nein, Thallius meint vermutliche die width und height der JComponent.
Ein GridLayout stellt jeder Komponenten den gleichen Raum zur Verfügung, und schert sich dabei nicht um die preferredSize. Wenn du den Container mit dem GridLayout vergrößerst, stellt das GridLayout deinen JComponents einen Dimension zur Verfügung, die größer ist als "dim". Die effektive Größe, die eine JComponent zur verfügung hat, kann über this.getWidth() und this.getHeight() abgefragt werden.
Für deinen Fall sehe ich zwei annähernd gleich schlechte Möglichkeiten
1. Du zeichnest das Image nicht in der Größe dim.width und dim.height, sondern this.getWidth() und this.getHeight(). Nachteil: das Image dürfte verzerrt werden.
2. Du zeichnest das Image zentriert im verfügbaren Raum und legst einen hübschen Rahmen drumherum. Nachteil: das eigentliche Problem mit den großen Abständen wird nicht gelöst.
Ich würde übrigens nicht für jedes Tile eine eigene JComponent verwenden, sondern mir eine JComponent schreiben, die eine Referenz auf eine Tile-Liste enthält und die einzelnen Tiles in der paintComponent() zeichnet. Diese JComponent würde ich dann so darstellen, dass die prefverredSize berücksichtigt wird, z. B. als viewport in einer JScrollPane.
 

LatinFavourite

Bekanntes Mitglied
Ich würde übrigens nicht für jedes Tile eine eigene JComponent verwenden, sondern mir eine JComponent schreiben, die eine Referenz auf eine Tile-Liste enthält und die einzelnen Tiles in der paintComponent() zeichnet. Diese JComponent würde ich dann so darstellen, dass die prefverredSize berücksichtigt wird, z. B. als viewport in einer JScrollPane.

Habe es entsprechend umgesetzt und füge lediglich eine TileComponent ein. Auf dieser zeichne ich wie von dir vorgeschlagen die einzelnen Tiles. Funktioniert nun auch so, wie gewünscht.
upload_2016-9-7_20-55-51.png
Macht das einen deutlichen Unterschied im Ressourcenverbrauch, nun nur noch eine Komponente zu haben?
Jedenfalls nochmals vielen Dank für den Tipp.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
D Eigene Component erstellen? AWT, Swing, JavaFX & SWT 4
A Eigene, sich selbst zeichnende Component AWT, Swing, JavaFX & SWT 5
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
B Notepad++ in die eigene GUI einbinden AWT, Swing, JavaFX & SWT 7
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
M Eigene Klasse mit Grafikobjekten schreiben AWT, Swing, JavaFX & SWT 4
S JavaFX Drehen um eigene Achse AWT, Swing, JavaFX & SWT 2
P X extends TreeView - eigene Methoden AWT, Swing, JavaFX & SWT 5
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
L JavaFX Eigene JavaFX Controls anlegen AWT, Swing, JavaFX & SWT 1
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
T Swing Eigene Konsole AWT, Swing, JavaFX & SWT 5
D Swing Eigene Tabelle AWT, Swing, JavaFX & SWT 18
M eigene horizontale Scrollbar AWT, Swing, JavaFX & SWT 1
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6
Kenan89 3D Models aus anderen Spielen in eigene einfügen AWT, Swing, JavaFX & SWT 3
R SWT Eigene Events erstellen und werfen AWT, Swing, JavaFX & SWT 59
P Eigene CMD GUI zum Starten von JAR AWT, Swing, JavaFX & SWT 10
M Swing eigene Dialoge, aber wie genau? AWT, Swing, JavaFX & SWT 5
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
K 3D-Grafik Eigene "Kamera" AWT, Swing, JavaFX & SWT 2
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
B Eigene Methoden in TABs einfügen AWT, Swing, JavaFX & SWT 8
R eigene Methoden für Buttons? AWT, Swing, JavaFX & SWT 11
H Swing Eigene Komponente wird nur halb oder komisch angezeigt AWT, Swing, JavaFX & SWT 3
H Swing Eigene Komponente reagiert falsch auf mouseClicked() AWT, Swing, JavaFX & SWT 5
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
T SWT eigene Komponenten AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
A Eigene StatusBar AWT, Swing, JavaFX & SWT 2
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
S Eigene GUI Elemente erstellen AWT, Swing, JavaFX & SWT 6
D Eigene Methode soll Gerade zeichnen AWT, Swing, JavaFX & SWT 5
D Swing Eigene Komponente mit JSpinner AWT, Swing, JavaFX & SWT 4
MrMilti eigene Klasse in JTable ablegen AWT, Swing, JavaFX & SWT 12
R Swing JTable: Eigene Zeichnung im Header AWT, Swing, JavaFX & SWT 11
A Eigene Border für Buttons AWT, Swing, JavaFX & SWT 19
A Eigene Buttons AWT, Swing, JavaFX & SWT 20
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
S Eigene GUI (evt. Toolkit) AWT, Swing, JavaFX & SWT 10
M SWT: eigene Events AWT, Swing, JavaFX & SWT 9
& eigene Schriftart in JEditorpane AWT, Swing, JavaFX & SWT 2
T Eigene Fenster kreieren?zb. wie bei Winamp? AWT, Swing, JavaFX & SWT 9
F eigene Swing-Komponente. Drehregler AWT, Swing, JavaFX & SWT 4
M Eigene Klasse für mehrer JSplitPanes AWT, Swing, JavaFX & SWT 3
M Eigene Komponenten basteln AWT, Swing, JavaFX & SWT 25
O Eigene GUI Objekte entwerfen? AWT, Swing, JavaFX & SWT 3
S Eigene Komponenten AWT, Swing, JavaFX & SWT 2
T Eigene erweiterte MouseEvents nutzen AWT, Swing, JavaFX & SWT 2
M In eigene JPanel Klasse zeichnen AWT, Swing, JavaFX & SWT 4
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
M eigene ComponentUI und Serializable AWT, Swing, JavaFX & SWT 3
E Eigene Steuerelemente bauen AWT, Swing, JavaFX & SWT 3
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
T 4 db tabellen in einem karteireiter eigene klasse für die me AWT, Swing, JavaFX & SWT 7
S SWT Für jede gui komponente eigene methode AWT, Swing, JavaFX & SWT 2
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
D eigene SwingKonsole. AWT, Swing, JavaFX & SWT 5
I Eigene JComboBox AWT, Swing, JavaFX & SWT 10
C UIDefaults für eigene Klasse anpassen AWT, Swing, JavaFX & SWT 3
C ISelectionProvider und eigene Selections AWT, Swing, JavaFX & SWT 2
M kann man auch eigene look and feels machen? AWT, Swing, JavaFX & SWT 2
L eigene Komponente, ActionEvent senden? AWT, Swing, JavaFX & SWT 3
E Beim Schließen des Fensters eigene Funktion aufrufen AWT, Swing, JavaFX & SWT 8
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
T JFrame - eigene Titelleiste AWT, Swing, JavaFX & SWT 8
Y Eigene Komponente einfügen AWT, Swing, JavaFX & SWT 6
G Eigene Koponente erstellen AWT, Swing, JavaFX & SWT 3
G Eigene Componente in jScrollView einbetten AWT, Swing, JavaFX & SWT 6
T Eigene grafische Oberfläche AWT, Swing, JavaFX & SWT 7
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
C Swing Component bei Doppelklick löschen AWT, Swing, JavaFX & SWT 4
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30

Ähnliche Java Themen

Neue Themen


Oben