Swing Focus auf gemalte Component

Hallo zusammen,

ich programmiere gerade für meine Bachelorarbeit eine graphische Oberfläche, mit der Diagramme gezeichnet werden und später auch verarbeitet werden sollen.
Aktuell wird nach Betätigung eines JButton auf einem erweiterten JPanel eine erweitertes JInternalFrame gezeichnet. Dieses enthält ein JTextField als Attribut und soll nun nach einem Klick beschrieben werden können.
Bis jetzt habe ich es über ein in der GUI eingelassenes Textfeld beschrieben ( ala settext() ), das muss doch aber auch direkt gehen, oder? Das Problem ist, dass das Textfelfd im InternalFrame keinen Focus erhält und sich deshalb nicht beschreiben, bzw ein KeyEvent auslösen lässt. Kann mir eventuell jemand weiterhelfen?

Vielen Dank im Vorraus

PS: Ist mein erster Eintrag in diesem Forum, also bitte ruhig kritische Anmerkung, wenn ich etwas falsch beschrieben habe, oder etwas fehlt!
Java:
// Das erweiterte JInternalFrane, dass auf dem Panel gezeichnet wird
public class Box extends JInternalFrame
{
        private TextField BoxName;
        public Box(){
            BoxName = new JTextField("");
            // Schriftfarbe setzen
            BoxName.setForeground(Color.BLACK);
            BoxName.setHorizontalAlignment( JTextField.CENTER ); 
            BoxName.addKeyListener( new KeyAdapter() 
            {
            @Override
            public void keyReleased ( KeyEvent evt )
            {
                BoxNameKeyReleased( evt );
            }
        });
}
Java:
public class Graphic extends JPanel 
{
// Hier Ausschnitte aus PaintComponent()
     @Override
    protected void paintComponent ( final Graphics g )
    {
         for (Iterator<Box> it = diagramn.getBoxes().iterator(); it.hasNext();) 
        {
            // Zeichnen der Boxen
            Box box = it.next();

            box.setBounds( controller.checkBounds( box.getBounds() ) );
            box.setBorder( BorderFactory.createLineBorder( Color.BLACK, 1 ) );
            box.setLayout( new GridLayout(2, 1) );

            SwingUtilities.paintComponent( g2d, box, this, box.getBounds() );
        }
    }
}
 

Michael...

Top Contributor
Warum das box.setBounds, setBorder & setLayout in der paintComponent? Es ist doch überflüssig - zumindest Border & Layout - bei jedem Zeichnen noch mal zu setzen?

Die mir bekannten Programme, stellen sobald ich eine Textkomponente bearbeite auch eine "echte" Textkomponente zur Verfügung. Du könntest also genauso - vergleichbar wie CellEditor bei JTable und JLabel - beim Editieren ein echtes JTextField mit Größe und Position des gezeichneten JTextFields anbieten.
 
Danke für die schnelle Antwort,

setbounds() verwende ich, um sicherzustellen, dass die gezeichnete Box nicht außerhalb der Grenzen des Panles liegt. Kann man bestimmt auch schon vorher abfangen, genau wie setlayout(), danke für den Hinweis.

setbounds() verwende ich um den Rahmen der Box ensprechend seinen Status ( markiert, oder eben nicht ) zu setzen.

Die mir bekannten Programme, stellen sobald ich eine Textkomponente bearbeite auch eine "echte" Textkomponente zur Verfügung. Du könntest also genauso - vergleichbar wie CellEditor bei JTable und JLabel - beim Editieren ein echtes JTextField mit Größe und Position des gezeichneten JTextFields anbieten.
Ich benutze das JInternalFrame und nicht ein einzelnes TextFeld, da später noch eine JList hinzugefügt werden soll. Das Problem ist, dass ich zwar alle Events auf dem Panel erhalte, nicht aber die, die auf dem InternalFrame auslösen sollen.
Bis jetzt habe ich immer so darauf zugegriffen:
->Ist Box an Stelle x,y auf Panel
->settext() der Box

Entschuldige meine Unkenntnis, bin noch relativ neu dabei in Sachen Java-Programmierung.
 

Michael...

Top Contributor
Das Problem ist, dass ich zwar alle Events auf dem Panel erhalte, nicht aber die, die auf dem InternalFrame auslösen sollen.
Warum Du JInternalFrame verwendest und sogar erweiterst ist mir immer noch nicht klar. Aber Deine Box Objekte sind ja nicht in der GUI verbaut, es wird ja lediglich eine Abbildung dieser Komponenten auf das Graphic Panel gezeichnet. Da können die üblichen Events nicht auslösen, da der Anwender ja nur auf das Bild klickt/tippt und nicht auf den JInternalFrame oder seine Komponenten.
 
Danke für deine erneute Rückmeldung!

Hm, das ist ungünstig. Also liegt der Fehler darin, dass ich die Boxen male, und nicht direkt via graphic.add( JComponent ) hinzufüge? Dann müsste es doch möglich sein, auch auf die einzelnen Komponenten zuzugreifen, oder?

Ich werde das mal ausprobieren, danke für den Hinweis!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Focus auf titledborder AWT, Swing, JavaFX & SWT 8
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
xYurisha Gui Focus von JTextField weglenken AWT, Swing, JavaFX & SWT 6
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T SWT Button soll nur sichbar sein,wenn im Textfeld der Focus ist AWT, Swing, JavaFX & SWT 4
B Swing JTextfeld bekommt nur jedes Zweite mal Focus AWT, Swing, JavaFX & SWT 11
E JTextPane Focus AWT, Swing, JavaFX & SWT 1
D ComboBoxCellEditor Refresh beim Focus AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
A Focus Problem AWT, Swing, JavaFX & SWT 4
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
H Swing JTextField in JWindow, JWindow bekommt focus zurück? AWT, Swing, JavaFX & SWT 9
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5
M focus subFrame AWT, Swing, JavaFX & SWT 3
G Force Focus für JButton AWT, Swing, JavaFX & SWT 2
lumo SWT Composite Focus AWT, Swing, JavaFX & SWT 2
T disabled Checkbox soll trotzdem Focus bekommen AWT, Swing, JavaFX & SWT 9
C Swing Focus Management AWT, Swing, JavaFX & SWT 3
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
H Swing Focus bekommen AWT, Swing, JavaFX & SWT 4
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
L AWT Focus auf Fenster setzen AWT, Swing, JavaFX & SWT 4
H warum kann ich das focus event nicht abfangen ? AWT, Swing, JavaFX & SWT 5
L Swing Input Focus eines JTextFields in einer JList AWT, Swing, JavaFX & SWT 2
A Focus in JTable Cell AWT, Swing, JavaFX & SWT 3
A Focus für JApplet AWT, Swing, JavaFX & SWT 7
R Focus ermitteln AWT, Swing, JavaFX & SWT 2
C JTable Focus Handling AWT, Swing, JavaFX & SWT 2
Nitram Swing Focus im JFrame AWT, Swing, JavaFX & SWT 10
I Swing Focus Listener bei PComboBox von pswing Erweiterung AWT, Swing, JavaFX & SWT 7
V Swing Problem mit Focus setzen AWT, Swing, JavaFX & SWT 7
thE_29 Swing JTabbedPane Focus von Komponenten außerhalb AWT, Swing, JavaFX & SWT 10
B JTable getselectedrow liefert -1 wenn Focus verloren AWT, Swing, JavaFX & SWT 4
S Versuch den Focus zu klauen detektieren? AWT, Swing, JavaFX & SWT 14
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
V JTabbedPane - keine "Focus"-Box auf selektiertem T AWT, Swing, JavaFX & SWT 2
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
O Focus im GBL steuern. AWT, Swing, JavaFX & SWT 3
K Focus an das JPanel übergeben AWT, Swing, JavaFX & SWT 2
K Focus-Problem AWT, Swing, JavaFX & SWT 9
O TextBoxen Focus über Pfeiltasten steuern AWT, Swing, JavaFX & SWT 3
G Problene mt Focus unter Swing AWT, Swing, JavaFX & SWT 7
G JTable und Focus AWT, Swing, JavaFX & SWT 30
D Beim Starten ein JTextfield Focus geben AWT, Swing, JavaFX & SWT 7
J JTextPane bekommt keinen Focus! AWT, Swing, JavaFX & SWT 3
P TextFeld Focus entfernen AWT, Swing, JavaFX & SWT 2
F Problem mit Actions, TextComponents und Focus AWT, Swing, JavaFX & SWT 2
K Focus mit Mouseclick auf JPanel setzen AWT, Swing, JavaFX & SWT 4
D Focus auf JPanel setzen AWT, Swing, JavaFX & SWT 2
B JTable - Focus - TabTaste AWT, Swing, JavaFX & SWT 2
D Focus in bestimmter Celle in JTable AWT, Swing, JavaFX & SWT 3
B Komponente in JTable bekommt keinen Focus AWT, Swing, JavaFX & SWT 3
M Focus beim öffnen eines neuen JFrames AWT, Swing, JavaFX & SWT 6
O JTextField- Selection / Focus bei nicht editierbaren Feldern AWT, Swing, JavaFX & SWT 2
J Focus auf JFrame AWT, Swing, JavaFX & SWT 3
B Focus für Textfeld AWT, Swing, JavaFX & SWT 5
B im JTree Focus setzen und navigieren AWT, Swing, JavaFX & SWT 3
B JInternalFrame in den Vordergrund rücken + Focus AWT, Swing, JavaFX & SWT 15
D JTable: Focus auf Zelle markiert ihren Text zum editieren AWT, Swing, JavaFX & SWT 2
C Komponente mit Focus bevor JButton-Klick merken. AWT, Swing, JavaFX & SWT 6
L Focus setzen AWT, Swing, JavaFX & SWT 3
G JTabbedPane, Focus, ChangeListener AWT, Swing, JavaFX & SWT 1
B Focus in JOptionPane AWT, Swing, JavaFX & SWT 2
J Focus-Problem bei Vollbildmodus AWT, Swing, JavaFX & SWT 7
A Combobox Focus-Events, Tab in Tabelle AWT, Swing, JavaFX & SWT 7
F Fenster in den Vordergrund aber nicht im Focus AWT, Swing, JavaFX & SWT 21
O Abfrage ob eine bstimmte Komponente den Focus hat AWT, Swing, JavaFX & SWT 4
T JTable Focus auf Zelle setzen AWT, Swing, JavaFX & SWT 3
R Focus durch "tabben" von JTable Zelle auf andere K AWT, Swing, JavaFX & SWT 8
R Focus speeren AWT, Swing, JavaFX & SWT 2
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
W Components Focus mit TAB-Taste VERTIKAL bewegen AWT, Swing, JavaFX & SWT 4
V JTextField Focus Cursor setzen AWT, Swing, JavaFX & SWT 2
D jcolorchooser - lost focus AWT, Swing, JavaFX & SWT 2
R Focus auf bereits geöffnetes Fenster setzen AWT, Swing, JavaFX & SWT 9
O Welche Möglichkeit zum Focus setzen! AWT, Swing, JavaFX & SWT 2
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
M Focus einstellen AWT, Swing, JavaFX & SWT 3
G Focus so setzen, daß in einer jTextArea der Cursor blinkt AWT, Swing, JavaFX & SWT 7
G JTable: Rahmen bei Focus um Zelle AWT, Swing, JavaFX & SWT 2
thE_29 Modaler Dialog - close on not focus AWT, Swing, JavaFX & SWT 3
P Focus auf JFrame AWT, Swing, JavaFX & SWT 5
G JOptionPane verliert Focus AWT, Swing, JavaFX & SWT 3
A JTree Problem mit Focus bzw. Selection AWT, Swing, JavaFX & SWT 5
C Focus setzen AWT, Swing, JavaFX & SWT 2
G JTree Focus setzen AWT, Swing, JavaFX & SWT 2
F HILFE!!! Focus-Probleme bei unterschiedlichen Panel's AWT, Swing, JavaFX & SWT 3
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
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben