Verschachtelte JPanels FocusTraversalPolicy

Status
Nicht offen für weitere Antworten.

Remo84

Mitglied
Hallo zusammen

Ich habe ein JPanel, das ein linkes und ein rechtes JPanel enthält.
Diese enthalten wiederum jeweils ein Textfeld und eine JTable.

Jedes JPanel ist innerhalb einer eigenen Klasse und die Datenfelder sind private.

Nun möchte ich mit Tab den Fokus so vergeben:
1) Textfeld des linken JPanels
2) JTable des linken JPanels
3) Textfeld des rechten JPanels
4) JTable des rechten JPanels

Nun habe ich eine eigene FocusTraversalPolicy geschrieben, die innerhalb eines JPanels auch funktioniert.

Wie kann ich nun den Fokus Panelübergreifend vergeben?

Vielen Dank
Gruss Remo
 

Ebenius

Top Contributor
Eigentlich funktioniert das von Haus aus so wie Du willst, da brauchst Du keine eigene FocusTraversalPolicy.
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class FocusFun {

  public static void main(String[] args) {
    final JPanel leftPanel = new JPanel(new BorderLayout(6, 6));
    leftPanel.add(new JTextField(10), BorderLayout.NORTH);
    leftPanel.add(new JScrollPane(createTable()), BorderLayout.CENTER);

    final JPanel rightPanel = new JPanel(new BorderLayout(6, 6));
    rightPanel.add(new JTextField(10), BorderLayout.NORTH);
    rightPanel.add(new JScrollPane(createTable()), BorderLayout.CENTER);

    final JPanel centerPanel = new JPanel(new GridLayout(1, 2, 6, 6));
    centerPanel.add(leftPanel);
    centerPanel.add(rightPanel);

    final JPanel buttonPanel =
          new JPanel(new FlowLayout(FlowLayout.TRAILING));
    buttonPanel.add(new JButton("OK"));
    buttonPanel.add(new JButton("Cancel"));

    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(centerPanel, BorderLayout.CENTER);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);

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

  private static JTable createTable() {
    final JTable table = new JTable(2, 2);
    return table;
  }
}
Wahrscheinlich wunderst Du Dich, dass Du aus den Tabellen mit TAB nicht mehr rauskommst. CTRL+TAB / CTRL+SHIFT+TAB wechseln den Fokus aus einer Tabelle zur nächsten / vorhergehenden Komponente. Wenn Du mit TAB / SHIFT+TAB aus egal welcher Zelle der Tabelle den Fokus wechseln möchtest -- was ich als Benutzer normaler Weise nicht mögen würde --, dann setzt Du das Key-Binding der Tabelle um:
[java=41] final ActionMap actionMap = table.getActionMap();
actionMap.put("focusNextComponent", new AbstractAction() {

private static final long serialVersionUID = 1L;

public void actionPerformed(ActionEvent e) {
((Component) e.getSource()).transferFocus();
}
});
actionMap.put("focusPreviousComponent", new AbstractAction() {

private static final long serialVersionUID = 1L;

public void actionPerformed(ActionEvent e) {
((Component) e.getSource()).transferFocusBackward();
}
});

final InputMap inputMap =
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0),
"focusNextComponent");
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,
KeyEvent.SHIFT_DOWN_MASK), "focusPreviousComponent");[/code]
Vielleicht willst Du bei TAB dann der nächste Komponente den Fokus geben, wenn die letzte Zelle der Tabelle den Fokus hat und mit SHIFT+TAB dann der vorhergehende Komponente den Fokus geben, wenn die erste Zelle der Tabelle den Fokus hat. Das ginge dann bspw. so:
[java=41] final ActionMap actionMap = table.getActionMap();
actionMap.put("selectNextCellOrFocusNextComponent", new AbstractAction() {

private static final long serialVersionUID = 1L;

public void actionPerformed(ActionEvent e) {
final JTable table = (JTable) e.getSource();
if (table.getRowCount() - 1 == table.getSelectedRow()
&& table.getColumnCount() - 1 == table.getSelectedColumn()) {
table.transferFocus();
} else {
final Action delegate =
table.getActionMap().get("selectNextColumnCell");
if (delegate != null) {
delegate.actionPerformed(e);
}
}
}
});
actionMap.put("selectPreviousCellOrFocusPreviousComponent",
new AbstractAction() {

private static final long serialVersionUID = 1L;

public void actionPerformed(ActionEvent e) {
final JTable table = (JTable) e.getSource();
if (table.getSelectedRow() == 0
&& table.getSelectedColumn() == 0) {
table.transferFocusBackward();
} else {
final Action delegate =
table.getActionMap().get("selectPreviousColumnCell");
if (delegate != null) {
delegate.actionPerformed(e);
}
}
}
});

final InputMap inputMap =
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0),
"selectNextCellOrFocusNextComponent");
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,
KeyEvent.SHIFT_DOWN_MASK),
"selectPreviousCellOrFocusPreviousComponent");
[/code]
Ich hoffe, das hilft. Falls ich Dich falsch verstanden habe, frag einfach nochmal.

Ebenius
 

Remo84

Mitglied
Hallo Ebenius

Vielen Dank für deine super Beispiele.

Du hast recht das funktioniert bei deinem Beispiel standardmässig schon so.

Bei mir werden die Komponenten nicht in der "richtigen" Reihenfolge angesprungen deshalb bin ich auf die Idee mit der FocusTraversalPolicy gekommen.
Vorgestellt habe ich mir das Ganze wie eine Postorder-Traversierung. Zuerst wird die "unterste" Policy verwendet, die für das linke Panel zuständig ist. Wenn die letzte Komponente den Fokus hat, springt man eine "Ebene" nach oben. Von dort springt man wieder nach unten in die Policy des rechten Panels.

Ich hoffe das ist verständlich ;)
Aus reiner Neugier. Funktioniert das wie ich es mir vorgestellt habe?
Ich denke so könne ich den Fokus sehr flexibel vergeben.


Das Problem, dass ich mit Tab nicht aus der Tabelle rauskomme habe ich mit
Java:
table.setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, null);
gelöst.

Gruss Remo
 

Ebenius

Top Contributor
Das Problem, dass ich mit Tab nicht aus der Tabelle rauskomme habe ich mit
Java:
table.setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, null);
gelöst.
Stimmt, ich vergesse immer wieder, dass das auch geht. Trotzdem mein zweiter Änderungsvorschlag gefällt mir besser, da ich als Benutzer normaler Weise erwarte, innerhalb einer Tabelle mit TAB und SHIFT+TAB die Zellen wechseln zu können. Kommt aber immer drauf an, ich weiß.

Nun also zum (hoffentlich jetzt richtig verstandenen Problem): Weil Du kein Beispiel machen willst, nehme ich einfach mal mein Beispiel von oben und lege fest, dass erst die Tabelle und dann das Textfeld angesprungen werden soll. :-D Ein einfacher Vorschlag sieht so aus. Hilft Dir das?

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;
import javax.swing.FocusManager;

public class FocusFun {

  public static void main(String[] args) {
    final JTextField leftTextField = new JTextField(10);
    final JTextField rightTextField = new JTextField(10);
    final JTable leftTable = createTable();
    final JTable rightTable = createTable();

    final JPanel leftPanel = new JPanel(new BorderLayout(6, 6));
    leftPanel.add(leftTextField, BorderLayout.NORTH);
    leftPanel.add(new JScrollPane(leftTable), BorderLayout.CENTER);

    final JPanel rightPanel = new JPanel(new BorderLayout(6, 6));
    rightPanel.add(rightTextField, BorderLayout.NORTH);
    rightPanel.add(new JScrollPane(rightTable), BorderLayout.CENTER);

    final JPanel centerPanel = new JPanel(new GridLayout(1, 2, 6, 6));
    centerPanel.add(leftPanel);
    centerPanel.add(rightPanel);
    installMyFocusTraversalPolicy(centerPanel, new Component[]
          { leftTable, leftTextField, rightTable, rightTextField });

    final JPanel buttonPanel =
          new JPanel(new FlowLayout(FlowLayout.TRAILING));
    buttonPanel.add(new JButton("OK"));
    buttonPanel.add(new JButton("Cancel"));

    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(centerPanel, BorderLayout.CENTER);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);

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

  private static JTable createTable() {
    final JTable table = new JTable(2, 2);
    table.changeSelection(0, 0, false, false);
    table.setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, null);
    table.setFocusTraversalKeys(FocusManager.BACKWARD_TRAVERSAL_KEYS, null);
    table.setPreferredScrollableViewportSize(new Dimension(100, 40));
    return table;
  }

  private static void installMyFocusTraversalPolicy(
        JPanel panel,
        final Component[] focusChain) {
    panel.setFocusTraversalPolicyProvider(true);
    panel.setFocusTraversalPolicy(new FocusTraversalPolicy() {
 
      @Override
      public Component getFirstComponent(Container aContainer) {
        return focusChain[0];
      }
 
      @Override
      public Component getLastComponent(Container aContainer) {
        return focusChain[focusChain.length - 1];
      }
 
      @Override
      public Component getDefaultComponent(Container aContainer) {
        return getFirstComponent(aContainer);
      }
 
      @Override
      public Component getComponentBefore(
            Container aContainer,
            Component aComponent) {
        final int len = focusChain.length;
        for (int i = 0; i < len; i++) {
          final Component test = focusChain[i];
          if (test == aComponent) {
            return focusChain[(i - 1 + len) % len];
          }
        }
        return getLastComponent(aContainer);
      }
 
      @Override
      public Component getComponentAfter(
            Container aContainer,
            Component aComponent) {
        final int len = focusChain.length;
        for (int i = 0; i < len; i++) {
          final Component test = focusChain[i];
          if (test == aComponent) {
            return focusChain[(i + 1) % len];
          }
        }
        return getFirstComponent(aContainer);
      }
    });
  }
}
Beachte, dass das centerPanel nur ein FocusTraversalPolicyProvider ist, aber kein CycleRoot. Happy Hacking!

Ebenius
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Näher an Deinen Anforderungen (und auch sinnvoller) sind in diesem Beispiel die beiden einzelnen Panels FocusTraversalPolicyProvider:

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;
import javax.swing.FocusManager;

public class FocusFun {

  public static void main(String[] args) {
    final JTextField leftTextField = new JTextField(10);
    final JTextField rightTextField = new JTextField(10);
    final JTable leftTable = createTable();
    final JTable rightTable = createTable();

    final JPanel leftPanel = new JPanel(new BorderLayout(6, 6));
    leftPanel.add(leftTextField, BorderLayout.NORTH);
    leftPanel.add(new JScrollPane(leftTable), BorderLayout.CENTER);
    installMyFocusTraversalPolicy(leftPanel, new Component[] { leftTable,
      leftTextField });

    final JPanel rightPanel = new JPanel(new BorderLayout(6, 6));
    rightPanel.add(rightTextField, BorderLayout.NORTH);
    rightPanel.add(new JScrollPane(rightTable), BorderLayout.CENTER);
    installMyFocusTraversalPolicy(rightPanel, new Component[] { rightTable,
      rightTextField });

    final JPanel centerPanel = new JPanel(new GridLayout(1, 2, 6, 6));
    centerPanel.add(leftPanel);
    centerPanel.add(rightPanel);

    final JPanel buttonPanel =
          new JPanel(new FlowLayout(FlowLayout.TRAILING));
    buttonPanel.add(new JButton("OK"));
    buttonPanel.add(new JButton("Cancel"));

    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(centerPanel, BorderLayout.CENTER);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);

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

  private static void installMyFocusTraversalPolicy(
        JPanel panel,
        final Component[] focusChain) {
    panel.setFocusTraversalPolicyProvider(true);
    panel.setFocusTraversalPolicy(new FocusTraversalPolicy() {

      @Override
      public Component getFirstComponent(Container aContainer) {
        return focusChain[0];
      }

      @Override
      public Component getLastComponent(Container aContainer) {
        return focusChain[focusChain.length - 1];
      }

      @Override
      public Component getDefaultComponent(Container aContainer) {
        return getFirstComponent(aContainer);
      }

      @Override
      public Component getComponentBefore(
            Container aContainer,
            Component aComponent) {
        final int len = focusChain.length;
        for (int i = 0; i < len; i++) {
          final Component test = focusChain[i];
          if (test == aComponent) {
            return focusChain[(i - 1 + len) % len];
          }
        }
        return getLastComponent(aContainer);
      }

      @Override
      public Component getComponentAfter(
            Container aContainer,
            Component aComponent) {
        final int len = focusChain.length;
        for (int i = 0; i < len; i++) {
          final Component test = focusChain[i];
          if (test == aComponent) {
            return focusChain[(i + 1) % len];
          }
        }
        return getFirstComponent(aContainer);
      }
    });
  }

  private static JTable createTable() {
    final JTable table = new JTable(2, 2);
    table.changeSelection(0, 0, false, false);
    table.setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, null);
    table.setFocusTraversalKeys(FocusManager.BACKWARD_TRAVERSAL_KEYS, null);
    table.setPreferredScrollableViewportSize(new Dimension(100, 40));
    return table;
  }
}
Natürlich ist die FocusTraversalPolicy ziemlich einfach, prüft nicht, ob die Komponente focusable ist, oder enabled, ... Das überlasse ich dann Dir. :)

[Edit] Natürlich sollten die FocusTraversalPolicies (sofern nicht stateless und mit Default Constructor erzeugbar) nicht vergessen, java.io.Serializable zu implementieren... Das hab ich mir ebenfalls geklemmt.

Ebenius
 
Zuletzt bearbeitet:

Remo84

Mitglied
Hallo Ebenius

Sorry dass ich nicht glich ein Beispiel angehängt habe.

Dies hole ich nun nach.

Java:
//Left.java
import java.awt.BorderLayout;
import java.awt.Component;

import javax.swing.FocusManager;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

public class Left extends JPanel {
	private JTextField textField;
	private JButton button;
	private JTable table;
	private JScrollPane scrollPane;
	private MyFocusTraversalPolicy focusPolicy;

	public Left() {
		System.out.println("Left erstellt");

		Component[] focusOrder = { textField, table };
		focusPolicy = new MyFocusTraversalPolicy(focusOrder);

		setFocusCycleRoot(true);
		setFocusTraversalPolicy(focusPolicy);

		setLayout(new BorderLayout(2, 2));

		button = new JButton("OK");
		textField = new JTextField("Text");
		table = new JTable(2, 2);

		table.setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, null);
		scrollPane = new JScrollPane(table);

		add(textField, BorderLayout.NORTH);
		add(button, BorderLayout.CENTER);
		add(scrollPane, BorderLayout.SOUTH);
	}
}

Java:
//Right.java
import java.awt.BorderLayout;
import java.awt.Component;

import javax.swing.FocusManager;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

public class Right extends JPanel {
	private JTextField textField;
	private JTable table;
	private JScrollPane scrollPane;
	private MyFocusTraversalPolicy focusPolicy;

	public Right() {
		System.out.println("Right erstellt");

		Component[] focusOrder = { textField, table };
		focusPolicy = new MyFocusTraversalPolicy(focusOrder);

		setFocusCycleRoot(true);
		setFocusTraversalPolicy(focusPolicy);

		setLayout(new BorderLayout(2, 1));

		textField = new JTextField("Text");
		table = new JTable(2, 2);
		table.setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, null);
		scrollPane = new JScrollPane(table);

		add(textField, BorderLayout.NORTH);
		add(scrollPane, BorderLayout.SOUTH);
	}
}


Java:
//Master.java
import java.awt.BorderLayout;
import java.awt.Component;

import javax.swing.JPanel;

public class Master extends JPanel {
	private Left leftPanel;
	private Right rightPanel;
	private MyFocusTraversalPolicy focusPolicy;

	public Master() {
		Component[] focusOrder = { leftPanel, rightPanel };
		focusPolicy = new MyFocusTraversalPolicy(focusOrder);

		setFocusCycleRoot(true);
		setFocusTraversalPolicy(focusPolicy);

		setLayout(new BorderLayout(6, 6));

		leftPanel = new Left();
		rightPanel = new Right();

		add(leftPanel, BorderLayout.EAST);
		add(rightPanel, BorderLayout.WEST);
	}
}


Java:
//Main.java
import javax.swing.JFrame;

public class Main extends JFrame {
	private Master masterPanel;

	public Main() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 300);
		setVisible(true);

		masterPanel = new Master();

		add(masterPanel);

		pack();
	}

	public static void main(String[] args) {
		Main main = new Main();
	}
}

Java:
//MyFocusTraversalPolicy.java
import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;

public class MyFocusTraversalPolicy extends FocusTraversalPolicy {
	final private Component[] focusChain;

	public MyFocusTraversalPolicy(Component[] focusOrder) {
		focusChain = focusOrder;
	}

	@Override
	public Component getFirstComponent(Container aContainer) {
		return focusChain[0];
	}

	@Override
	public Component getLastComponent(Container aContainer) {
		return focusChain[focusChain.length - 1];
	}

	@Override
	public Component getDefaultComponent(Container aContainer) {
		System.out.println("getDefaultComponent");
		return getFirstComponent(aContainer);
	}

	@Override
	public Component getComponentBefore(Container aContainer,
			Component aComponent) {
		System.out.println("getComponentBefore");

		final int len = focusChain.length;
		for (int i = 0; i < len; i++) {
			final Component test = focusChain[i];
			if (test == aComponent) {
				return focusChain[(i - 1 + len) % len];
			}
		}
		return getLastComponent(aContainer);
	}

	@Override
	public Component getComponentAfter(Container aContainer,
			Component aComponent) {
		System.out.println("getComponentAfter");
		final int len = focusChain.length;
		for (int i = 0; i < len; i++) {
			final Component test = focusChain[i];
			if (test == aComponent) {
				return focusChain[(i + 1) % len];
			}
		}
		return getFirstComponent(aContainer);
	}
}

Nun wollte ich, wenn ich TAB drücke, als erstes die Policy vom Master Panel holen und dort die erste Komponente rauslesen. Also das leftPanel.
Von dort geht es weiter nach "unten". Also wird von der Policy vom leftPanel die erste Komponente geholt (das textField).
Drücke ich nun das zweite Mal die TAB-Taste wird der Fokus der table gegeben und somit die letzte Komponente im linken Panel erreicht.
Ein erneutes TAB springt wieder nach "oben" in die Policy des Master Panels. Dort wird die zweite Komponente ausgewählt (rightPanel).
Nun das gleiche Spiel wie mit dem leftPanel. Der Fokus wird dem textField gegeben.
Hat der Fokus die letzte Komponente erreicht (table) beginnt das ganze von Vorne.

Hab ich zu hohe Erwartungen an die FocusTraversalPolicy ? ;)

Gruss Remo
 

Ebenius

Top Contributor
Nein, das geht zu realisieren. Allerdings funktioniert die FokusTraversalPolicy nicht ganz so wie Du denkst... Deine Policy des Master-Panels selektiert die Panels. Das darf sie nicht tun. Sie muss selbst herausfinden, dass die Panels nicht fokussierbar sind, und dann an deren (möglicher Weise über die Container-Hierarchy angebotene) FokusTraversalPolicy übergeben. Ich schrieb ja oben, die Policies sind schon komplizierter. Schau doch einfach mal in den Quelltext der [c]java.awt.ContainerOrderFocusTraversalPolicy[/c]; dort siehst Du, wie die Policies arbeiten müssen, wenn sie sich um alles generisch kümmern; visible, enabled, focusable, focusCycleRoot, focusTraversalPolicyProvider...

Warum Deine Panels alle FocusCycleRoots sein müssen, hab ich noch nicht verstanden. Mach sie einfach zu FocusTraversalPolicyProviders, das ergibt IMHO viel mehr Sinn.

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Verschachtelte jframe oder jpanel mit backgrounds AWT, Swing, JavaFX & SWT 10
S Verschachtelte Layouts AWT, Swing, JavaFX & SWT 4
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
B viele JPanels auf JLayeredPane -> to SVG? AWT, Swing, JavaFX & SWT 15
CptK JPanels übereinander legen AWT, Swing, JavaFX & SWT 6
CptK JPanels wechseln AWT, Swing, JavaFX & SWT 2
B Minimum x und y von Children-JPanels ermitteln AWT, Swing, JavaFX & SWT 3
L Swing JPanels werden nicht angezeigt! AWT, Swing, JavaFX & SWT 7
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
A Swing JPanels dynamisch untereinander einfügen AWT, Swing, JavaFX & SWT 3
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
C LayoutManager Bei verkleinern des Fensters, verschieben sich JPanels übereinander. AWT, Swing, JavaFX & SWT 7
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
F Swing JPanels übereinander ohne Mananger AWT, Swing, JavaFX & SWT 1
K Swing Klassenstruktur mit mehreren JPanels AWT, Swing, JavaFX & SWT 3
S Swing Navigation durch JPanels AWT, Swing, JavaFX & SWT 0
S Bei BoxLayout haben hinzugefügten Jpanels einen Versatz/Space AWT, Swing, JavaFX & SWT 0
B Größer-/Kleinerziehen eines JFrames/JPanels erkennen AWT, Swing, JavaFX & SWT 2
C Bei Btn Klick zwei JPanels switchen AWT, Swing, JavaFX & SWT 14
M Swing Aktualisieren eines JPanels nach Tasteneingabe AWT, Swing, JavaFX & SWT 2
S Liste von JPanels mit festen Höhen AWT, Swing, JavaFX & SWT 3
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
S Swing Kopie eines JPanels inkl. aller objekte darin erstellen AWT, Swing, JavaFX & SWT 5
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
F Event Handling Kommunikation eines JButton ueber JPanels hinaus AWT, Swing, JavaFX & SWT 6
S Swing Drag&Drop mit TransferHandler und JPanels AWT, Swing, JavaFX & SWT 8
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
A Swing Aktualisieren eines JPanels AWT, Swing, JavaFX & SWT 13
N Abspeichern eines kompletten JPanels AWT, Swing, JavaFX & SWT 57
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
T jPanels im jFrame bewegen - Auch ohne Textfield? AWT, Swing, JavaFX & SWT 4
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
W Swing JFrame mit unterschiedlichen JPanels AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
C klassenübergreifende JPanels auf ein JFrame AWT, Swing, JavaFX & SWT 22
X Alle Components eines JPanels Enablen AWT, Swing, JavaFX & SWT 7
D Swing Problem mit Gridbaglayout bzw. Größenanpassung JPanels AWT, Swing, JavaFX & SWT 7
P Swing Größe eines JPanels bestimmen (ohne Border!) AWT, Swing, JavaFX & SWT 2
0 Ausschnitt eines JPanels als Bild speichern AWT, Swing, JavaFX & SWT 4
N Richtiges einstellen der size von JPanels AWT, Swing, JavaFX & SWT 10
D LayoutManager JPanels ohne LayoutManager platzieren AWT, Swing, JavaFX & SWT 6
Weltall 7 Swing JPanels werden doppelt gezeichnet AWT, Swing, JavaFX & SWT 6
C Swing JList mit JPanels AWT, Swing, JavaFX & SWT 6
J Swing JPanels werden ständig gezeichnet AWT, Swing, JavaFX & SWT 11
C Swing Inhalt eines JPanels ermitteln & bearbeiten AWT, Swing, JavaFX & SWT 5
G Swing Komponenten dem Hintergrundbild des JPanels anpassen? AWT, Swing, JavaFX & SWT 6
N Swing GUI updaten / Aufklappbare Jpanels AWT, Swing, JavaFX & SWT 2
E Swing JPanels durch ziehen am Rand vergrößern/verkleinern?! AWT, Swing, JavaFX & SWT 2
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
T Sichtbarmachen von Objekten auf mehreren JPanels AWT, Swing, JavaFX & SWT 2
J Swing Container innerhalb eines JPanels erfragen AWT, Swing, JavaFX & SWT 3
H Z-Order von JPanels in JFrames AWT, Swing, JavaFX & SWT 2
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
L mehere JPanels auf JFrame - setVisible() funktioniert nicht AWT, Swing, JavaFX & SWT 3
J Swing JScrollPane fasst JPanel und Groesse des JPanels soll sich aendern AWT, Swing, JavaFX & SWT 2
H Größen von JPanels,JLable und JTextfield.. AWT, Swing, JavaFX & SWT 12
H Layoutprobleme mit Jpanels AWT, Swing, JavaFX & SWT 2
S Swing Dynamische JPanels: Vertikales Strecken verhindern AWT, Swing, JavaFX & SWT 4
Pithecanthropus Swing JPanels dynamisch austauschen AWT, Swing, JavaFX & SWT 8
J SWING Fenster mit mehreren JPanels (dank JLayeredPane) AWT, Swing, JavaFX & SWT 19
R Swing JPanel enthält mehrere JPanels - Positionsvergabe AWT, Swing, JavaFX & SWT 4
P verschiedene JPanels einblenden je nach auswahl AWT, Swing, JavaFX & SWT 2
R MousePosition über mehrere JPanels darstellen AWT, Swing, JavaFX & SWT 13
A Mehrere JPanels in ein JFrame AWT, Swing, JavaFX & SWT 4
R JFrame enthält JScrollPane mit JPanels AWT, Swing, JavaFX & SWT 3
R Mehrere JPanels in JScrollPane AWT, Swing, JavaFX & SWT 3
R JScrollPane, mehrere JPanels hinzufügen AWT, Swing, JavaFX & SWT 2
R Hinzufügen mehrer JPanels zu einem JFrame AWT, Swing, JavaFX & SWT 2
D Event beim Laden eines JPanels? AWT, Swing, JavaFX & SWT 3
A Problem beim Setzen von JPanels AWT, Swing, JavaFX & SWT 4
M Automatische Anpassung eines JPanels in einem JFrame AWT, Swing, JavaFX & SWT 6
M Anpassen der Größe eines JPanels (incl. gezeichneter Ampel) AWT, Swing, JavaFX & SWT 2
G Hilfe Meine JPanels verschwinden im Müll AWT, Swing, JavaFX & SWT 10
G Hintergrundfarbe eines JPanels zurücksetzen AWT, Swing, JavaFX & SWT 12
G Alle Komponenten eines JPanels durchlaufen AWT, Swing, JavaFX & SWT 11
G MVC Modell mit JPanels? AWT, Swing, JavaFX & SWT 1
P Problem bei Aktualisierung eines JPanels AWT, Swing, JavaFX & SWT 2
G mehrere JPanels untereinander ? AWT, Swing, JavaFX & SWT 2
M Wirkliche Größe eines JPanels/o.ä. ermitteln AWT, Swing, JavaFX & SWT 3
T Bisherige JFrames in JPanels oder JInternalFrames? AWT, Swing, JavaFX & SWT 2
M Minimieren von verschachtelten JPanels AWT, Swing, JavaFX & SWT 2
M Problem, an ImageIcon in JPanels zu kommen. AWT, Swing, JavaFX & SWT 2
G Größe eines JPanels beeinflussen AWT, Swing, JavaFX & SWT 5
S Update des fensters beim Ersetzen von JPanels AWT, Swing, JavaFX & SWT 9
S Automatisches Rendern einen JPanels AWT, Swing, JavaFX & SWT 8
S Frage: Mehrere JPanels gleichen Button zuzweisen? AWT, Swing, JavaFX & SWT 10
D JTree mit JPanels als UserObjects AWT, Swing, JavaFX & SWT 4
S Stapel aus transpareneten JPanels AWT, Swing, JavaFX & SWT 2
C Verschachtelung von JPanels mit verschiedenen LayoutManager AWT, Swing, JavaFX & SWT 4
G Auf Graphic-Context eines bestimmten JPanels zeichnen AWT, Swing, JavaFX & SWT 3
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
A dynamisch weitere jpanels untereinander hinzufügen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben