JPanel - einige Fragen und Probleme

Mujahiddin

Top Contributor
Guten Tag.
1. Ist es möglich, einen DropTargetListener in eine Klasse, diie von JPanel erbt, zu implementieren? Ich habe das versucht, aber auf die jeweiligen Methoden (dragEnter, dragExit, drop etc.) zeigt das JPanel keinerlei Reaktion. Auf die mouseDragged Methode vom MouseMotionListener allerdings schon - Woran liegt das?

2. Ist es möglich, ein JPanel so zu konfigurieren, dass man praktisch ins 'Unendliche' scrollt? Also dass man vertikale und horizontale Scroll-Leisten hat. Es sollte so funktionieren, dass beim Start links oben die Koordinaten (0|0) sind und man beim Hoch/Links-Scrollen in den Minusbereich scrollt.

3. Kann man in ein JPanel 'reinzoomen', ohne groß Methoden dafür zu entwickeln? Also ist da bereits eine vorgefertigte Methode?

Das wars vorerst schon!
Danke im Voraus,
Mujahiddin
 

Ebenius

Top Contributor
1. Ist es möglich, einen DropTargetListener in eine Klasse, diie von JPanel erbt, zu implementieren? Ich habe das versucht, aber auf die jeweiligen Methoden (dragEnter, dragExit, drop etc.) zeigt das JPanel keinerlei Reaktion. Auf die mouseDragged Methode vom MouseMotionListener allerdings schon - Woran liegt das?
Drag and Drop funktioniert da ein bisschen anders. Dafür benötigt man einen TransferHandler auf der exportierenden und auf dem importierenden Komponente. Arbeite Dich doch mal durch dieses Tutorial: Lesson: Drag and Drop and Data Transfer (The Java™ Tutorials > Creating a GUI With JFC/Swing)

2. Ist es möglich, ein JPanel so zu konfigurieren, dass man praktisch ins 'Unendliche' scrollt? Also dass man vertikale und horizontale Scroll-Leisten hat. Es sollte so funktionieren, dass beim Start links oben die Koordinaten (0|0) sind und man beim Hoch/Links-Scrollen in den Minusbereich scrollt.
Möglich ist das schon, ich würde dazu die Viewport-Klasse ableiten und anpassen. Wenn Du das hinbekommst, dann müsste das ganze eigentlich auch mit einem JScrollPane (und eigenem Viewport) funktionieren.

3. Kann man in ein JPanel 'reinzoomen', ohne groß Methoden dafür zu entwickeln? Also ist da bereits eine vorgefertigte Methode?
Dafür ist nichts fertig, wirst Du also selber machen müssen. Ebenfalls im Viewport, schlage ich vor.

Ebenius
 

Mujahiddin

Top Contributor
Hallo.
Das Tutorial ist riesenlang und enthält größtenteils JList, JTable etc. - aber das ist ja nicht meine Frage. Ich will Objekte nur in einem Komponenten hin- und herbewegen, nämlich auf einem JPanel. Diese 'Objekte' sind aus meinen selbsterstellten Klassen, und da versteh ich das mit den DataFlavors nicht.
Ich hab mal einen eigenen TransferHandler geschrieben:

Java:
class PanelTransferHandler extends TransferHandler
	{
		public PanelDnDHandler()
		{
			super();
		}
		
		public boolean canImport(TransferSupport s)
		{
			return true;
		}
		public boolean importData(TransferSupport supp)
		{
			switch(clickDealing)
			{
				case STREET_PHASE: //wenn man 'Straße erstellen' ausgewählt hat
					Point dropped = supp.getDropLocation().getDropPoint();
					System.out.println("dropped, " + dropped); //damit ich weiß, obs funktioniert hat
					Knoten streetNode = new StrassenKnoten(dropped, streetName); //erstellt einen StrassenKnoten an der Stelle
					getGraph().add(streetNode); //fügt ihn dem Grafen hinzu
					getGraph().setLinkBetween(lastStreetNode, streetNode, lastStreetNode.getBeeLineDistance(streetNode)); //verbindet den letzten (im Dragvorgang) ge'draggten' StrassenKnoten mit dem gedroppten StrassenKnoten
					lastStreetNode = null; //Straße ist fertig.
					break;
			}
			return super.importData(t);
		}
		public int getSourceActions(JComponent c)
		{
			return COPY_OR_MOVE;
		}
		public Transferable createTransferable(JComponent c) {
		    return null;
		}

	}
So wird mein Problem wohl deutlicher.
Was ich bezwecken will (vorerst):
Ich will, dass man eine Straße 'zeichnen' kann. Somit soll bei einem Drag an jedem gedraggten Punkt ein StrassenKnoten erstellt und diese miteinander verbunden werden. Wenn gedroppt wird, wird ein letzter Knoten erstellt und die Straße zuende gebracht, damit eine neue Straße erstellt werden kann.

Später würde ich dann wohl noch wollen, dass man die Knoten im Nachhinein hin- und herbewegt, was wohl ähnlich aussehen würde, aber jetzt erst Mal mit der Straße. Danach könnte ich das ja übertragen mit spezifischen Änderungen.

Bei meinem Code wird allerdings nicht reagiert, wenn ich die Maus fallenlasse. Bzw die linke Maustaste.
Irgendwelche Lösungsvorschläge?
Liebe Grüße,
Muja.
 

Mujahiddin

Top Contributor
Würde da beim TransferHandler nicht das Image erscheinen? Also das neben dem Cursor, mit dem Plus zum Kopieren und dem anderen zum Ausschneiden oder das VerbotenIcon? Das würde ich bei meiner StraßezeichenAktion gerne verhindern. Am einfachsten wäre es eigentlich für den Anfang, lediglich eine 'Drop' Funktion einzubauen, damit ich weiß, wann der Mauszeiger losgelassen wurde (mouseReleased geht hier ja nicht...)
 

Ebenius

Top Contributor
Wenn Du nur innerhalb einer Komponente verschieben willst, dann vergiss DragNDrop einfach wieder. Nimm MouseListener und MouseMotionListener.

Ob das Icon beim Drag erscheint, hängt vom System ab. Woran das genau liegt, hab ich mir jetzt nicht näher angeschaut, da DnD dafür ohnehin nicht der beste Ansatz ist.

Im Tutorial gibt's einen Abschnitt der sich nicht um vorgefertigtes DnD dreht; den Teil mit JList, JTable, etc. kannst Du also einfach ignorieren. Aber wie gesagt: Nimm MouseListener und MouseMotionListener.

Ebenius
 

Ebenius

Top Contributor
Hier mal ein kleines ausführbares Beispielprogramm:
Java:
/* (@)SimpleVectorPaintTestGui.java */

/* Copyright 2010 Sebastian Haufe

 * Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

 * Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License. */

package com.ebenius;

import static java.awt.RenderingHints.KEY_ANTIALIASING;
import static java.awt.RenderingHints.VALUE_ANTIALIAS_ON;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.geom.*;
import java.util.LinkedList;
import java.util.List;

import javax.swing.*;

/**
 * Simple painting program.
 * 
 * @author Sebastian Haufe
 */
public class SimpleVectorPaintTestGui {

  static class PaintNode implements java.io.Serializable {

    /** Serial version UID */
    private static final long serialVersionUID = 1L;

    private Point2D.Double location;
    private boolean endOfPath = false;

    /** Creates a new {@code PaintNode}. */
    PaintNode(double x, double y, boolean endOfPath) {
      location = new Point2D.Double(x, y);
      this.endOfPath = endOfPath;
    }

    /** Creates a new {@code PaintNode}. */
    PaintNode(Point2D location, boolean endOfPath) {
      this(location.getX(), location.getY(), endOfPath);
    }

    Point2D.Double getLocation() {
      return location;
    }

    /**
     * Sets the location.
     * 
     * @param location the location to set
     */
    public void setLocation(Point2D.Double location) {
      this.location.setLocation(location);
    }

    boolean isEndOfPath() {
      return endOfPath;
    }
  }

  static class PaintPane extends JComponent {

    /** Serial version UID */
    private static final long serialVersionUID = 1L;

    private double dotSize = 4; // px
    private double lockInRange = 10; // px

    private AffineTransform userTransform = new AffineTransform();
    private final List<PaintNode> paintNodes = new LinkedList<PaintNode>();
    private final Arc2D.Double dot =
          new Arc2D.Double(0, 0, dotSize, dotSize, 0, 360, Arc2D.PIE);
    private final Line2D.Double line = new Line2D.Double(Double.NaN, 0, 0, 0);
    private Stroke stroke = new BasicStroke(1);

    private PaintNode draggedNode;

    /** Creates a new {@code PaintPane}. */
    PaintPane() {
      enableEvents(AWTEvent.MOUSE_EVENT_MASK);
      enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
      setPreferredSize(new Dimension(400, 400));
    }

    @Override
    protected void processMouseEvent(MouseEvent e) {
      super.processMouseEvent(e);
      final Point2D.Double location = new Point2D.Double();
      try {
        userTransform.inverseTransform(e.getPoint(), location);
        if (e.isShiftDown()) { // move on SHIFT
          draggedNode = null;
          if (e.getID() == MouseEvent.MOUSE_PRESSED) {
            draggedNode = findNode(location);
          } else if (e.isControlDown() // delete on MOUSE_CLICKED / CTRL+SHIFT
                && e.getID() == MouseEvent.MOUSE_CLICKED) {
            paintNodes.remove(findNode(location));
          }
        } else if (e.isControlDown()) { // add end point on CTRL
          if (e.getID() == MouseEvent.MOUSE_CLICKED) {
            paintNodes.add(new PaintNode(location, true));
          }
        } else if (e.isAltDown()) { // delete on ALT
          if (e.getID() == MouseEvent.MOUSE_CLICKED) {
            // TODO
          }
        } else { // add start/intermediate otherwise
          if (e.getID() == MouseEvent.MOUSE_CLICKED) {
            paintNodes.add(new PaintNode(location, false));
          }
        }
        repaint();
      } catch (NoninvertibleTransformException ex) {
        System.err.println("Do not use noninvertible transforms!");
        ex.printStackTrace();
      }
    }

    @Override
    protected void processMouseMotionEvent(MouseEvent e) {
      final Point2D.Double location = new Point2D.Double();
      try {
        userTransform.inverseTransform(e.getPoint(), location);
        if (e.isShiftDown() && // move on SHIFT
              e.getID() == MouseEvent.MOUSE_DRAGGED) {
          if (draggedNode != null) {
            draggedNode.setLocation(location);
          }
        } else {
          draggedNode = null;
        }
        repaint();
      } catch (NoninvertibleTransformException ex) {
        System.err.println("Do not use noninvertible transforms!");
        ex.printStackTrace();
      }
    }

    PaintNode findNode(Point2D.Double location) {
      final Rectangle2D.Double bounds = new Rectangle2D.Double();

      /* update dot size to 1 px in view space */
      final double[] src = { 0, 0, this.lockInRange, this.lockInRange };
      double lockInRange = 0.05;
      try {
        this.userTransform.inverseTransform(src, 0, src, 0, 2);
        lockInRange =
              Math.max(Math.abs(src[2] - src[0]), Math.abs(src[3] - src[1]));
      } catch (NoninvertibleTransformException ex) {
        System.err.println("Do not use noninvertible transforms!");
        ex.printStackTrace();
      }

      bounds.x = location.x - lockInRange;
      bounds.y = location.y - lockInRange;
      bounds.width = bounds.height = lockInRange * 2;
      for (PaintNode node : paintNodes) {
        if (bounds.contains(node.getLocation())) {
          return node;
        }
      }

      return null;
    }

    void setDotSize(double dotSize) {
      final double old = this.dotSize;
      this.dotSize = dotSize;
      refreshDotAndStroke();
      firePropertyChange("dotSize", old, dotSize); //$NON-NLS-1$
      repaint();
    }

    void setUserTransform(AffineTransform userTransform) {
      final AffineTransform old = this.userTransform;
      if (userTransform == null) {
        userTransform = new AffineTransform();
      }
      this.userTransform = userTransform;
      refreshDotAndStroke();
      firePropertyChange("userTransform", old, userTransform); //$NON-NLS-1$
      repaint();
    }

    private void refreshDotAndStroke() {
      /* update dot size to 1 px in view space */
      try {
        double[] src = { 0, 0, dotSize, dotSize };
        this.userTransform.inverseTransform(src, 0, src, 0, 2);
        dot.width = Math.abs(src[2] - src[0]);
        dot.height = Math.abs(src[3] - src[1]);
        src = new double[] { 0, 0, 1, 1 };
        this.userTransform.inverseTransform(src, 0, src, 0, 2);
        stroke =
              new BasicStroke((float) (Math.min(src[2] - src[0], src[3]
                    - src[1])));
      } catch (NoninvertibleTransformException ex) {
        System.err.println("Do not use noninvertible transforms!");
        ex.printStackTrace();
        dot.width = dot.height = 1;
        stroke = new BasicStroke(1);
      }
    }

    @Override
    protected void paintComponent(Graphics g) {
      super.paintComponent(g);

      final Graphics scratchGraphics = g.create();
      try {
        if (scratchGraphics instanceof Graphics2D) {
          final Graphics2D g2d = (Graphics2D) scratchGraphics;
          g2d.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);
          g2d.transform(userTransform);
          g2d.setStroke(stroke);
          line.x1 = Double.NaN;
          // lines first
          for (PaintNode node : paintNodes) {
            final Point2D.Double location = node.getLocation();
            if (!Double.isNaN(line.x1)) {
              line.x2 = location.x;
              line.y2 = location.y;
              g2d.setColor(Color.DARK_GRAY);
              g2d.draw(line);
            }
            if (!node.isEndOfPath()) {
              line.x1 = location.x;
              line.y1 = location.y;
            } else {
              line.x1 = Double.NaN;
            }
          }
          Color nextColor = Color.RED;
          for (PaintNode node : paintNodes) {
            final Point2D.Double location = node.getLocation();
            dot.x = location.x - dot.width / 2.;
            dot.y = location.y - dot.height / 2.;
            if (node.isEndOfPath()) {
              nextColor = Color.RED;
            } else if (nextColor == Color.RED) {
              nextColor = Color.GREEN;
            } else {
              nextColor = Color.BLACK;
            }
            g2d.setColor(nextColor);
            g2d.fill(dot);
          }
        }
      } finally {
        scratchGraphics.dispose();
      }
    }
  }

  /** Creates the GUI. Call on EDT, only! */
  static void createAndShowGui() {
    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    final PaintPane paintPane = new PaintPane();
    paintPane.setUserTransform(AffineTransform.getScaleInstance(40, 40));
    contentPane.add(new JScrollPane(paintPane));

    final JFrame f = new JFrame("Test Frame: SimpleVectorPaintTestGui"); //$NON-NLS-1$
    f.setContentPane(contentPane);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }

  /** @param args ignored */
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

      public void run() {
        createAndShowGui();
      }
    });
  }
}
  • Einfaches Klicken legt einen Punkt an (schwarz, oder grün, wenn davor kein Endpunkt ist).
  • Klicken mit CTRL legt einen Endpunkt an (rot).
  • Klicken mit CTRL+SHIFT entfernt einen Punkt (im rechteckigen Fangbereich von 10 Pixeln).
  • Schieben mit SHIFT verschiebt einen Punkt (im rechteckigen Fangbereich von 10 Pixeln).
Ist nur als Ideengeber gedacht…

Das Ding ist für Transformationen vorbereitet, hat aber keine Nutzerschnittstelle zum zoomen, verschieben, etc. Die Strichdickenberechnung, Punktgrößenberechnung und Fangbereichsberechnung hab ich ganz faul gemacht. Die müssten geändert werden, um Rotation, Schrägstellen (sheer) oder nicht quadratische Skalierung sauber unterstützen zu können.

Ebenius
 
Zuletzt bearbeitet:

Mujahiddin

Top Contributor
Ja also danke sehr für deine Hilfe, ich hatte noch von früher Erfahrungen mit JList und dort wurde ein mouseReleased Event nach einem mouseDragged Event schlichtwegs ignoriert. Beim JPanel hab ich das somit überhaupt nicht ausprobiert, und jetzt, um mich nochmal zu überzeugen, musste ich bemerken, dass es doch klappt.
Lange Rede, kurzer Sinn: Ich kann alles über mouseMotionListener und mouseListener bewerkstelligen, was ich zu bewerkstelligen versuche! Zumindest den Punkt 1 - Punkt 2 und 3 muss ich dann noch weiter einarbeiten. Danke nochmal für die Hilfsbereitschaft. ^^ Bei weiteren Problemfällen melde ich mich dann hier.
Liebe Grüße,
Mujahiddin
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
C jPanel im jPanel verändern Java Basics - Anfänger-Themen 15
B JPanel nachträglich verändern Java Basics - Anfänger-Themen 20
C JPanel erhält sporadisch keinen Fokus Java Basics - Anfänger-Themen 3
I repaint bei jpanel Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben