jPanels im jFrame bewegen - Auch ohne Textfield?

Torquemada

Mitglied
Hallo

Also ich habe folgenden Code geschrieben (mit der Hilfe von NetBeans)

Java:
package javaapplication2;

public class Balken extends javax.swing.JFrame {

    
    public Balken() {
        initComponents();
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jTextField3 = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jTextField2 = new javax.swing.JTextField();

        jLabel1.setText("jLabel1");

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(0, 0, 204));
        jPanel1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jPanel1KeyPressed(evt);
            }
        });

        jTextField3.setText("jTextField1");
        jTextField3.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextField3KeyPressed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
                .addContainerGap())
        );

        jPanel2.setBackground(new java.awt.Color(0, 255, 0));
        jPanel2.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jPanel2KeyPressed(evt);
            }
        });

        jTextField2.setText("jTextField1");
        jTextField2.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextField2KeyPressed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(266, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(266, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 172, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void jPanel1KeyPressed(java.awt.event.KeyEvent evt) {                                   
    }                                  

    private void jTextField2KeyPressed(java.awt.event.KeyEvent evt) {

        if (evt.getKeyChar() == 'ö') {
        int a = (int) getLocation().getX();
        int aCreed = a+2;
        setLocation(aCreed, WIDTH);
        
        }
    }

    private void jTextField3KeyPressed(java.awt.event.KeyEvent evt) {
        // TODO add your handling code here:
    }

    private void jPanel2KeyPressed(java.awt.event.KeyEvent evt) {
        // TODO add your handling code here:
    }
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Balken().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration
}

Nun möchte ich gerne versuchen:
1. Dass ich nicht ein Textfield benötige um die jPanels zu bewegen
2. Dass ich nur die jPanels bewege und nicht die ganze jFrame.
 
S

SlaterB

Gast
du kannst einen KeyListener an das Panel heften, dann sollst du aber vielleicht noch für Focus sorgen,
besser ist da wahrscheinlich KeyBindings

How to Use Key Bindings (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)

-------

deine Location-Befehle sollten an das Panel gehen, null-Layout ist dann sicher nötig
Doing Without a Layout Manager (Absolute Positioning) (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
 

Torquemada

Mitglied
Danke schon mal ich hab mal ein bisschen rumgespielt und aufgehört mit dem Editor von NetBeans zu arbeiten. Nun bin ich fast soweit, dass ich die Buttons hin und her schieben lassen kann nur bekomm ich ein Problem der Code:

Java:
package javaapplication2;

import java.awt.Container;
import java.awt.Insets;
import java.awt.Dimension;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.KeyStroke;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class NewMain {
    private static Action anAction1;
     String a1 =null ;
     int b1 = (int) Integer.parseInt(a1);
     int c1 = b1+2;
     
     private static Action anAction2;
     String a2 =null ;
     int b2 = (int) Integer.parseInt(a2);
     int c2 = b2-2; 
     
     public class Spieler1Position {
         
         public void dosomething(){
             int d = c1+c2+100; // Die 100 sind zum ausrichten in der Mitte
         }
     
     }
    public static void addComponentsToPane(Container pane) throws IOException {
        System.out.println("Zuerst gibt Spieler 1 seinen Namen ein");
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        String Spieler1 = br.readLine();
        
        System.out.println("Nun gibt Spieler 2 seinen Namen ein");
        String Spieler2 = br.readLine();
        
        pane.setLayout(null);
        
        Insets insets = pane.getInsets();
        
        JButton b1 = new JButton(Spieler1);
        pane.add(b1);
        Dimension size = b1.getPreferredSize();
        b1.setBounds(350 + insets.left, 5 + insets.top,
                     d + size.width,  size.height); // Problem: Er streicht mir hier d als non static an was ja auch verständlich ist, aber wie bekomme ich das nun in static ich versteh das nicht so ganz mit der FAQ Lösung
        
        b1.getInputMap().put(KeyStroke.getKeyStroke("d"),
                            "doSomething");
        b1.getActionMap().put("doSomething",
                             anAction1);
        
        b1.getInputMap().put(KeyStroke.getKeyStroke("a"),
                            "doSomething");
        b1.getActionMap().put("doSomething",
                             anAction2);

        JButton b2 = new JButton(Spieler2);
        pane.add(b2);
        size = b2.getPreferredSize();
        b2.setBounds(350 + insets.left, 540 + insets.top,
                    100 + size.width, size.height);

    }
    private static void createAndShowGUI() throws IOException {
        JFrame frame = new JFrame("Fliegender Ball");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addComponentsToPane(frame.getContentPane());
        Insets insets = frame.getInsets();
        frame.setSize(800 + insets.left + insets.right,
                      600 + insets.top + insets.bottom);
        frame.setVisible(true);
    }
    public static void main(String[] args) throws IOException {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    createAndShowGUI();
                } catch (IOException ex) {
                    System.out.println("Fehler!");
                    Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }
}

Wie schon im Text beschrieben weiß ich nicht genau, wie ich jetzt d in static bekomme. Könnt ihr nochmal helfen

PS: Es soll ein kleines Spiel werden, indem sich die beiden Buttons bewegen können müssen.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> Wie schon im Text beschrieben
? (edit: ok, jetzt sehe ich Zeile 51)

> wie ich jetzt d in static bekomme.
die Variable d finde ich ja, aber was bedeutet es, sie 'in static zu bekommen'?
eine statische Variable anzulegen und mit dem Wert zu befüllen sollte nicht weiter schwer sein,

wobei es auch sonst noch ein weiter Weg ist, nirgendwo wird den Buttons eine neue Location zugewiesen,
die bisher auch nicht gemerkt werden, keine Instanzattribute,

Spieler1Position wird nirgendwo verwendet, anAction1 bleibt immer null usw.


edit:
in Zeile 51 würde dir d, wie auch immer geartet, überhaupt nicht helfen,
denn das ist der Zeitpunkt der Erstellung, da kann ein User noch gar nichts machen usw.,
später in den Actions/ ehemals KeyListenern, da musst du was machen

komplizierte GUI schreiben und einfache Dinge wie Variablenzusammenspiel nicht kennen passt übrigens nur suboptimal zusammen..,
schon Konsolenprogramme wie einfache mathematische Berechnungen geschrieben?
 
Zuletzt bearbeitet von einem Moderator:

Torquemada

Mitglied
Nicht so viel bekomme im Moment eine Art Crash Kurs in einem Praktikum von einem Azubi.
Das Ziel ist es halt das am Ende da noch ein BackGroundImage reinkommt (also Viereck das für den "normalen" User aussieht wie ein Kreis) und dann sich dieser Kreis bewegt und immer zwischen den beiden Buttons hin und her "geschossen" wird. Ich mach das halt schrittweise und der erste Schritt war die Buttons einzufügen und beweglich auf "Tastaturkommande" zu machen, da der Azubi grade (Do bis heute) nicht da ist bin ich etwas augeschmissen und suche halt um rat.
Ich hoffe du bekommst jetzt einen Eindruck davon was ich vor hab und kannst mir Tipps geben die noch hilfreicher sind. War bis jetzt aber schon super :toll::toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
W Swing JFrame mit unterschiedlichen JPanels AWT, Swing, JavaFX & SWT 2
C klassenübergreifende JPanels auf ein JFrame AWT, Swing, JavaFX & SWT 22
L mehere JPanels auf JFrame - setVisible() funktioniert nicht AWT, Swing, JavaFX & SWT 3
A Mehrere JPanels in ein JFrame AWT, Swing, JavaFX & SWT 4
R JFrame enthält JScrollPane mit JPanels AWT, Swing, JavaFX & SWT 3
R Hinzufügen mehrer JPanels zu einem JFrame AWT, Swing, JavaFX & SWT 2
M Automatische Anpassung eines JPanels in einem JFrame AWT, Swing, JavaFX & SWT 6
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
U Jpanels auf einem Jframe austauschen AWT, Swing, JavaFX & SWT 2
P in JFrame zwischen verschiedenen JPanels wechseln AWT, Swing, JavaFX & SWT 7
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
A Swing JPanels dynamisch untereinander einfügen AWT, Swing, JavaFX & SWT 3
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
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
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
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
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
R Verschachtelte JPanels FocusTraversalPolicy AWT, Swing, JavaFX & SWT 6
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
R Mehrere JPanels in JScrollPane AWT, Swing, JavaFX & SWT 3
R JScrollPane, mehrere JPanels hinzufügen 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 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
A dynamisch weitere jpanels untereinander hinzufügen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben