Viele ActionListener (MouseListener) - Performance

Hag2bard

Bekanntes Mitglied
Guten Abend,
Ich möchte einen Map Generator erstellen, der in meinem Fall etwa 900 JLabels hat, mit jeweils einem eigenen ActionListener. Ist dieses Vorhaben realistisch oder ist das zuviel?
 

Robert Zenz

Top Contributor
Natuerlich ist es realstisch. Aber was die Performance angeht, musst du das probieren. Wenn alles statisch ist, dann koennte das schon funktioniere, wenn du 900 JLabels in Masse aendern willst, vielleicht nicht so. Musst du probieren was passiert.

Vielleicht ist eine Alternative angebrachter? Zum Beispiel eine Custom-Component auf welcher zu selbst zeichnest und den Klick nur fuer diese Komponente faengst (und dann selbst ausrechnest) was geklickt wurde.
 

LimDul

Top Contributor
MouseListener und dann kannst du die Mausposition abfragen.

Aber ich frage mich gerade warum - 900 Labels hört sich nicht nach einer sinnvollen Anwendung an. Wenn es um Spiele oder ähnliches geht - dann lieber direkt malen und nicht versuchen über Labels das zu platzieren, das kann nur schief gehen.
 

Hag2bard

Bekanntes Mitglied
AdvanceMap.png
Ich möchte dieses Programm nachbauen.
Rechts ein Tileset und links soll die Map gebaut werden. Ich hatte auf jeden Fall vor, ein Bufferedimage für beides zu nutzen aber die Mausevents wollte ich mit JLabels machen.
Ich schätze mit dem Holen der Mauskoordinaten bin ich gut dabei
 

mihe7

Top Contributor
Naja, eine solche Map dient normalerweise gerade dazu, nicht das Bild zu speichern. Dann könntest Du auch einfach ein Grafikprogramm verwenden.
 

Hag2bard

Bekanntes Mitglied
Ich denke heute stehe ich auf dem Schlauch da ich nicht weiß wie du das meinst. Ich möchte in Java einen MapEditor selber bauen und das dazugehörige Spiel(Pokemon). Beides gibt es schon aber ich möchte es dennoch selber programmieren.
 

mihe7

Top Contributor
Ich möchte in Java einen MapEditor selber bauen und das dazugehörige Spiel(Pokemon).
Was Du am Bildschirm siehst ist nur eine Darstellung dessen, was das Modell liefert.

Eine solche Map hat ihr eigenes Koordinatensystem, in dem Du mit Tiles statt Pixeln (als Größeneinheiten) arbeitest und statt Farbinformationen eben speicherst, welches Tile verwendet wird.

Ich frag mal andersrum: soll am Ende nur das Bild gespeichert werden?
 

Robert Zenz

Top Contributor
Ich hatte auf jeden Fall vor, ein Bufferedimage für beides zu nutzen aber die Mausevents wollte ich mit JLabels machen.

Mach' dir dann am besten einen "MouseListener" auf die Komponente in der du das "BufferedImage" anzeigst, und berechne dann das Tile per Hand basierend auf dem "MouseEvent" welches du gerade erhalten hast, das wird auf jeden Fall ohne Probleme funktionieren (eventuell muss die Komponente fokussierbar sein, das weisz ich aber nicht mehr, musst du probieren).
 

Neumi5694

Top Contributor
Das mit den 900 Labels hätt ich gerade noch verstanden, aber warum jeweils ein eigener Mauslistener ... einer für alle würd's ziemlich sicher auch tun.

Nimm dir ein Beispiel an Tabellen oder Listen.
Die haben einen Renderer, der aus EINEM Label besteht. Je nachdem, um welche Zeile oder Spalte es sich handelt, wird dieses Label formatiert, mit Text befüllt und dann gerendert. Nach dem Rendern merkt sich die UI-Engine das gerenderte Bild, das Label selbst ist ab jetzt unwichtig.
Für die nächste Zelle wird es wiederverwendet. Dies passiert so lange, bis die Tabelle gezeichnet ist.
Was Maus-Steuerung angeht, hat auch nicht jede Zelle einen eigenen Listener.
Es gibt EINEN Listener für die gesamte Fläche der Tabelle, anhand der Position wird ermittelt, welche Zelle sich unter der Maus befindet, dann wird die entsprechende Aktion ausgelöst.

Es gibt hier eine ganz klare Trennung zwischen Zellinhalt (Daten) und UI (Rendering, Maus-Listener).
 

Hag2bard

Bekanntes Mitglied
Also der Plan bis jetzt ist folgender:

Ein JScrollPane inkl einem JLabel welches ein ImageIcon beinhaltet und einen Mauslistener. Durch ein simples Teilen durch 16 und dank int bekomme ich eine Ganzzahl welches mir sagt welcher Block in x und y Richtung geklickt wurde.
Dann werde ich auf die linke Seite meines JFrames noch ein JLabel einfügen, welches ebenso ein ImageIcon beinhaltet und einen MouseListener.
Die JLabels werden in Wirklichkeit Objekte eigener Klassen sein, die von JLabel erben und am besten wiederverwendbar sind. Das mein Code Spaghetti-Code ist liegt daran dass ich erstmal nur experimentiert habe, wie das ganze am Ende funktioniert.
 

mihe7

Top Contributor
Du beschreibst nur das fast uninteressante UI. Der wichtigste Punkt, das Modell dahinter, fehlt mir nach wie vor.

Ich würde mir Gedanken in der Art machen: was ist ein Tile, was ein Tileset?

Ein Tile ist einfach ein Bild, das als Baustein für größere Bilder gedacht ist. Ein Tileset ist nun ein Bild, das ein Tile oder mehrere unterschiedliche Tiles gleicher Größe enthält. So gesehen kann man ein Tile auch als einelementiges Tileset auffassen.

Da ein Tileset auf einem Bild basiert, sind die Tiles rechteckig angeordnet, d. h. es gibt Höhe und Breite in der Einheit "Tiles". Also kann man sich erstmal ein Modell wie
Java:
interface Tileset {
    Size tileSize();
    Size size();
    Image image();
}
überlegen: tileSize() liefert die Größe eines Tiles im Tileset, size() die Größe des Tilesets in Tiles und image() das Bild des Tilesets.

Jetzt habe ich mir oben überlegt, dass man ein Tile als einelementiges Tileset auffassen kann. Es gibt also Teilmengen eines Teilsets. Die können aber irgendwo im Tileset liegen, müssen also nicht bei (0,0) beginnen. Um diese zu beschreiben, bräuchte man also noch die Lage. Dann können wir auch beliebige Teilmengen zurückgeben lassen... Kleine Ergänzung:
Java:
    Location location();
    Tileset subset(Location location, Size size);
location() liefert die Position im Tileset und subset() eine Teilmenge des Tilesets.

Schon hat man ein erstes Modell, mit dem arbeiten kann.

Was soll der Käse mit den Teilmengen? Ganz einfach: im Tileset sind oft Tiles enthalten, die zusammengehören. Zum Beispiel ein Haus. Durch die Teilmengen macht es keinen Unterschied, ob man ein einzelnes Tile oder das ganze Haus beschreibt. Und image() liefert immer das dazugehörige Bild. Man kann also im Editor später ganze Blöcke von Tiles auswählen...
 

Hag2bard

Bekanntes Mitglied
Also würde ich das Interface dann in meine Panelklasse implementieren?
Ich komme heute nicht mehr dazu aber ich habe mich gestern mal an einen saubereren Aufbau der Panel Klasse gewagt. Vielleicht könntet ihr da mal drüber schauen.
Mit dem Interface bin ich mir noch nicht sicher wann ich das einsetzen soll. Fakt ist, das mein TilePanel aus einem Bild besteht, nur die Geschichte mit den ausgewählten subTilesets kommt da halt noch dazu.

edit:

Hier doch noch die 2 Klassen

[CODE lang="java" title="Klasse TilePanel"]package pokemon;

import javafx.scene.layout.TilePane;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class TilePanel extends JPanel implements MouseListener {

private int selectedX = -1;
private int selectedY = -1;
private int preSelectedX = -1;
private int preSelectedY = -1;
private int tilesize = 16;
private int tileLength;
private int tileHeight;
private String filename = "tileset-advance.png";
private BufferedImage tilesetBufferedImage;

public TilePanel() {
try {
loadBufferedImage();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (preSelectedX != -1 && preSelectedY != -1) {
g.drawImage(tilesetBufferedImage, preSelectedX, preSelectedY, preSelectedX, preSelectedY, null);
}
if (selectedX != -1 && selectedY != -1) {
g.setColor(Color.RED);
g.drawRect(selectedX * tilesize, selectedY * tilesize, tilesize, tilesize);
}
}

private void loadBufferedImage() throws IOException {
tilesetBufferedImage = ImageIO.read(getClass().getResourceAsStream("filename"));
}


@Override
public void mouseClicked(MouseEvent e) {
if (selectedX != -1 && selectedY != -1) {
preSelectedX = selectedX;
preSelectedY = selectedY;
}
selectedX = e.getPoint().x;
selectedY = e.getPoint().y;
selectedX = selectedX / 16;
selectedY = selectedY / 16;
repaint();
}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

@Override
public Dimension getPreferredSize() {
return super.getPreferredSize();
}
}[/CODE]

[CODE lang="java" title="Klasse PokeEditor2"]package pokemon;

import javax.swing.*;


public class PokeEditor2 {

private String filename = "tileset-advance.png";
JScrollPane tileJScrollPane;


public PokeEditor2() {


JFrame mapCreator = new JFrame("Pokemap-Creator");
TilePanel tilepanel = new TilePanel();
tilepanel.addMouseListener(tilepanel);
tilepanel.setFocusable(true);

tileJScrollPane = new JScrollPane(tilepanel);
tileJScrollPane.setBounds(1387, 0, 150, 800);
tileJScrollPane.getVerticalScrollBar().setUnitIncrement(20);

mapCreator.add(tileJScrollPane);
mapCreator.pack();
mapCreator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mapCreator.setVisible(true);
}
}[/CODE]
 

mihe7

Top Contributor
Also würde ich das Interface dann in meine Panelklasse implementieren?
Nein. Das ist völlig separat vom UI. Über das Interface arbeitet das UI mit einem Tileset zusammen.

Nachtrag: das UI würde ein Objekt mit Tileset-Interface bekommen. Das Zeichnen des Panels könnte dann z. B. so aussehen:
Java:
g2.drawImage(tileset.image(), 0, 0, null);
if (selected != null) {
    Rectangle r = getBounds(selected);
    g2.draw(r);
}

Das Tileset-Modell oben muss auch nicht vollständig sein. Das ist ein erster Entwurf!
 
Zuletzt bearbeitet:

Hag2bard

Bekanntes Mitglied
Für was dann das Interface in diesem Fall? Die Methode kann ich doch schon direkt in meiner Tileset Klasse anlegen, dann muss ich nicht meine Klasse die das JFrame erstellt so zu klatschen.
 

mihe7

Top Contributor
Für was dann das Interface in diesem Fall?
Das Interface dient mir erstmal zur Modellierung; ich hätte in dieser frühen Phase auch ein UML-Diagramm zeichnen können.

Abgesehen davon hat das Interface den Vorteil, dass es Implementierungen entkoppelt. Auf diese Weise hast Du einen internen Plugin-Mechanismus: die Komponente, die mit einem Tileset arbeitet, weiß nicht, welche Implementierung sie bekommt.

Vielleicht nochmal im Zusammenhang: Du willst erstmal eine UI-Komponente (JComponent oder ähnliches), deren Aufgabe darin besteht, dem Anwender die Auswahl eines Tiles (oder eines Blocks von Tiles) aus einem Tileset zu ermöglichen. Nicht mehr, nicht weniger.

Die Komponente muss z. B. nicht wissen, woher das Bild des Tilesets kommt, ob es im Speicher erzeugt, aus einer lokalen Datei oder über das Internet geladen wurde. Sie muss auch den konkreten Typ des Bilds (z. B. BufferedImage) nicht kennen. Spielt alles keine Rolle.

Man könnte sich z. B. überlegen, ob man Methoden wie tileAtPixel(int x, int y) usw. Das sind alles erste Überlegungen.

dann muss ich nicht meine Klasse die das JFrame erstellt so zu klatschen.
Den Zusammenhang musst Du mir erklären. Das Tileset-Interface und deren Implementierung sind in separaten Dateien. Deine UI-Klassen werden dadurch übersichtlicher.
 

Hag2bard

Bekanntes Mitglied
Ok ich glaube ich verstehe. Ich habe die Tileset Klasse und deren Methoden wie tileAtPixel implementiere ich über ein Interface. Ich überlege mir mal, welchen Code ich noch in Methoden auslagern kann, dann werden die in mein Interface integriert.
Bin mal gespannt ob dabei was sinnvolles heraus kommt.
 

mihe7

Top Contributor
So in etwa, ja. Du hast ein Tileset-Interface und deren Methoden implementierst Du in einer Klasse (z. B. class BufferedTileset implements Tileset). Deine UI-Komponente arbeitet gegen das Tileset-Interface.
 

Hag2bard

Bekanntes Mitglied
Gut wenn ich Interfaces mal in der Praxis kennen lerne, ich kenne nur ein Beispiel was mir das vermeintliche Verständnis für Interfaces brachte:

Zahlung[] zahlungen = new Zahlungen[2];
zahlungen[0] = new PayPal();
zahlungen[1] = new GiroPay();

zahlung[0].erzeugeZahlung();
 

mihe7

Top Contributor
Das Prinzip ist genau das gleiche, Du musst Dir nur vorstellen, dass in dem Fall jemand das Zahlung-Array erhält, also nicht weiß, welche Impflementierungen drinsteckt. Trotzdem kann er für jedes Element erzeugeZahlung() aufrufen.
 

Hag2bard

Bekanntes Mitglied
Ich habe ein Problem, welches ich selber nicht lösen kann.

Ich bin jetzt soweit, dass ich rechts das Tileset angezeigt bekomme, dazu in der Lage bin ein Feld nach Wunsch auszuwählen und in den linken Teil des JFrames zu zeichnen.
Abgesehen von der Performance, fehlenden Extras und noch sehr unsauberem Code, funktioniert das ja schon super.
Aber ich habe folgendes Problem:

1635865969046.png
Wenn ich rechts einen Block auswähle, und links in das Fenster rein klicke, zeichnet er mir den Block + zusätzlich das Tileset..
Ich verstehe absolut nicht warum er das macht.
Ich könnte mit dem ausgewählten grünen Block nun das Tileset, was da links hingezaubert wurde übermalen, sobald ich aber einen
anderen Block auswähle, wird das Tileset erneut links hin gemalt.
1635866182990.png

Hier ist mein Code:

[CODE lang="java" title="Klasse PokeEditor2"]package pokemon;

import javax.swing.*;

public class PokeEditor2 {

private int tilePanelSelectedX = -1;
private int tilePanelSelectedY = -1;
private String filename = "tileset-advance.png";
JScrollPane tileJScrollPane;
TilePanel tilePanel;
MapPanel mapPanel;

public PokeEditor2() {

JFrame mapCreator = new JFrame("Pokemap-Creator");
mapCreator.setLayout(null);

this.tilePanel = new TilePanel(this);
this.tilePanel.addMouseListener(tilePanel);
this.tilePanel.setFocusable(true);
this.tilePanelSelectedX = tilePanel.getSelectedX();
this.tilePanelSelectedY = tilePanel.getSelectedY();

this.mapPanel = new MapPanel(this.tilePanelSelectedX, this.tilePanelSelectedY, this);
this.mapPanel.addMouseListener(mapPanel);
this.mapPanel.setFocusable(true);
this.mapPanel.setBounds(0, 0, 1350, 800);

tileJScrollPane = new JScrollPane(tilePanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
tileJScrollPane.setBounds(1387, 0, 150, 800);
tileJScrollPane.getVerticalScrollBar().setUnitIncrement(20);

mapCreator.add(tileJScrollPane);
mapCreator.add(mapPanel);
mapCreator.pack();
mapCreator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mapCreator.setVisible(true);

mapCreator.setSize(1500, 860);
mapCreator.setLocationRelativeTo(null);
mapCreator.setExtendedState(JFrame.MAXIMIZED_BOTH);

}

private void getAndSet(TilePanel tilePanel, MapPanel mapPanel) {
this.tilePanelSelectedX = tilePanel.getSelectedX();
this.tilePanelSelectedY = tilePanel.getSelectedY();
mapPanel.setTilePanelSelectedX(this.tilePanelSelectedX);
mapPanel.setTilePanelSelectedY(this.tilePanelSelectedY);
}

public void runGetandSet() {
getAndSet(tilePanel, mapPanel);
}


}[/CODE]

[CODE lang="java" title="Klasse TilePanel"]package pokemon;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class TilePanel extends JPanel implements MouseListener {

private final PokeEditor2 pokeEditor2;
private int selectedX = -1;
private int selectedY = -1;
private int preSelectedX = -1;
private int preSelectedY = -1;
private int tilesize = 16;
private String filename = "tileset-advance.png";
private BufferedImage tilesetBufferedImage;

public TilePanel(PokeEditor2 pokeEditor2) {
this.pokeEditor2 = pokeEditor2;
try {
loadBufferedImage();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
pokeEditor2.runGetandSet();
g.drawImage(tilesetBufferedImage, 0, 0, 128, 15971, null);
if (selectedX != -1 && selectedY != -1) {
g.setColor(Color.RED);
g.drawRect(selectedX * tilesize, selectedY * tilesize, tilesize, tilesize);
}
}

private void loadBufferedImage() throws IOException {
// tilesetBufferedImage = ImageIO.read(getClass().getResourceAsStream("filename"));
tilesetBufferedImage = ImageIO.read(getClass().getResource(filename));
}

@Override
public void mouseClicked(MouseEvent e) {
if (selectedX != -1 && selectedY != -1) {
preSelectedX = selectedX;
preSelectedY = selectedY;
}
selectedX = e.getPoint().x;
selectedY = e.getPoint().y;
selectedX = selectedX / 16;
selectedY = selectedY / 16;
repaint();
}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

public int getSelectedX() {
return selectedX;
}

public int getSelectedY() {
return selectedY;
}

}[/CODE]

[CODE lang="java" title="Klasse MapPanel"]package pokemon;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class MapPanel extends JPanel implements MouseListener {
private final PokeEditor2 pokeEditor2;
private int selectedX = -1;
private int selectedY = -1;
private int preSelectedX = -1;
private int preSelectedY = -1;
private final int tilesize = 16;
private String filename = "tileset-advance.png";
private BufferedImage tilesetBufferedImage;
private int repainted = 0;
private int tilePanelSelectedX = -1;
private int tilePanelSelectedY = -1;

public MapPanel(int tilePanelSelectedX, int tilePanelSelectedY, PokeEditor2 pokeEditor2) {
this.pokeEditor2 = pokeEditor2;
this.tilePanelSelectedX = tilePanelSelectedX;
this.tilePanelSelectedY = tilePanelSelectedY;
try {
loadBufferedImage();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
protected void paintComponent(Graphics g) {
pokeEditor2.runGetandSet();
if (this.tilePanelSelectedX != -1 && this.tilePanelSelectedY != -1) {
if (selectedX != -1 && selectedY != -1) {
g.drawImage(tilesetBufferedImage, selectedX * tilesize, selectedY * tilesize, (selectedX + 1) * tilesize, (selectedY + 1) * tilesize, this.tilePanelSelectedX * tilesize, this.tilePanelSelectedY * tilesize, (this.tilePanelSelectedX + 1) * tilesize, (this.tilePanelSelectedY + 1) * tilesize, null); // Das muss geändert werden, soll wo anders gezeichnet werden
}
}
}

@Override
public void mouseClicked(MouseEvent e) {
if (selectedX != -1 && selectedY != -1) {
preSelectedX = selectedX;
preSelectedY = selectedY;
}
selectedX = e.getPoint().x;
selectedY = e.getPoint().y;
selectedX = selectedX / 16;
selectedY = selectedY / 16;
repaint();
}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

private void loadBufferedImage() throws IOException {
//tilesetBufferedImage = ImageIO.read(getClass().getResourceAsStream(filename));
tilesetBufferedImage = ImageIO.read(getClass().getResource(filename));
}

public void setTilePanelSelectedX(int tilePanelSelectedX) {
this.tilePanelSelectedX = tilePanelSelectedX;
}

public void setTilePanelSelectedY(int tilePanelSelectedY) {
this.tilePanelSelectedY = tilePanelSelectedY;
}

}[/CODE]

Vielleicht habt ihr eine Idee, wo hier der Fehler liegt.

Also fakt ist auf jeden Fall, dass die überschriebene Methode paintComponent in TilePanel das Buffered Image nicht nur in das TilePanel zeichnet, sondern auch in das MapPanel.
Ich muss es irgendwie hinbekommen, dass er nur das TilePanel anmalt und nicht alle Komponenten
 
Zuletzt bearbeitet:

Hag2bard

Bekanntes Mitglied
Ich habe rausgefunden, dass wenn ich MapPanel das super.paintComponent(g); in die paintComponent Methode schreibe, er mir das Tileset nicht links rein zeichnet, aber die gemalten Tiles nach jedem neuen Klick auf ein neues anzumalendes Feld verschwinden.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
B viele JPanels auf JLayeredPane -> to SVG? AWT, Swing, JavaFX & SWT 15
A JavaFX Sehr viele Exceptions bei Taschenrechner mit JavaFx AWT, Swing, JavaFX & SWT 2
M If für viele TextFields AWT, Swing, JavaFX & SWT 7
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
M Swing Erste Schritte mit der GUI, viele Probleme AWT, Swing, JavaFX & SWT 36
propra 2D-Grafik Beliebig viele Objekte auf einer Zeichenfläche zeichnen AWT, Swing, JavaFX & SWT 15
L unbestimmt viele JComboBox und ItemListener dazu erstellen AWT, Swing, JavaFX & SWT 2
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
Dit_ Wenn viele NebenFenster zum Locationsetzen das HauptFenster brauchen AWT, Swing, JavaFX & SWT 2
P SWT Composite und viele Labels AWT, Swing, JavaFX & SWT 10
D Zu viele repaints() AWT, Swing, JavaFX & SWT 17
R JTable für sehr viele Daten sehr langsam AWT, Swing, JavaFX & SWT 20
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
Z zu viele prozesse AWT, Swing, JavaFX & SWT 2
G zu viele/große BufferedImage führt zu Java heap space AWT, Swing, JavaFX & SWT 5
D Wie viele Pixel welches Icon? AWT, Swing, JavaFX & SWT 4
TheJavaKid Lösung für zu Viele JMenuItems. AWT, Swing, JavaFX & SWT 4
T viele Canvas auf einem Panel und das GUI schmiert ab AWT, Swing, JavaFX & SWT 6
Starchild Beliebig viele Knöpfe AWT, Swing, JavaFX & SWT 5
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben