PingPong über Servlet steuern

Ermelyn

Mitglied
Hallo zusammen!

Ich möchte über eine Webseite ein Java PingPong spiel steuern, das auf einen anderen Computer ausgeführt wird. Das PingPong spiel wird ursprünglich mit Tasteneingabe gesteuert, ich möchte nun einen der beiden spieler (player 2) nun per Servlet steuern. Die Kommunikation zwischen Webseite (bzw Servlet) und PingPong habe ich schon erfolgreich mit RMI realisiert, darum dachte ich das Thema passt eher hier rein. Aber nun mein Problem: Ich bekomm die richtigen Daten zugeschickt kann aber mit ihnen nicht weiterarbeiten.

PingPong.java --> RMI Server, initalisiert das Spiel
Java:
package PingPong;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RMISecurityManager;
//import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class PingPong extends JFrame implements Hello  {
	private static final long serialVersionUID = 1L; 
	
	/**
	 * for the PingPong Game
	 */
	private JPanel jContentPane = null;
	private PanelPelota panel = null; // This is the panel of the game class
	private PanelPelota getPanel() {
		if (panel == null) {
			panel = new PanelPelota(); // The panel is created
		}
		return panel;
	}
	
	public int directionPlayerB=0;
	/**
	 * This is the default constructor
	 */
    public PingPong() {
		super();
		initialize();
        // Listeners for the keyboard
       this.addKeyListener(new KeyAdapter() {
	        	//Method for the key pressed
	            public void keyPressed(KeyEvent evt) {
	                formKeyPressed(evt);
	            }
	            // Method for the key released
	            public void keyReleased(KeyEvent evt) {
	                formKeyReleased(evt);
	            }
        	}
        );// Ende Keyboard Listener  
    }
    
    //Here i'm stating the method that will send the key pressed to the game class
	private void formKeyPressed(KeyEvent evt){
		panel.keyPressed(evt);
	}
    
    //	Here i'm stating the method that will send the key released to the game class
    private void formKeyReleased(KeyEvent evt){ panel.keyReleased(evt);}

    
	//Fenstergroesze usw um andere Positionen zu bestimmen
	Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();  	
	private int windowX= (int) (dim.getWidth());
	private int windowY= (int) (dim.getHeight());
	/**
	 * This method initializes the window
	 */
	private void initialize() {
		this.setResizable(false);
		this.setSize(windowX/2, windowY/2);
		this.setLocation(windowX/4,windowY/4);
		this.setContentPane(getJContentPane());
		this.setTitle("Ping Pong");
	}

	/**
	 * This method initializes jContentPane
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getPanel(), BorderLayout.CENTER);
		}
		return jContentPane;
	}

	/** 
	 * Servlet ruft über RMI diese Methode auf und übergibt die daten per Parameter
	 * 
	 * @param int action - 	von 0-2
	 * @return String rueckgabeWert - 	gibt Text an servlet zurück
	 */
    public String sayHello(int action) {
    	String rueckgabeWert=null;
    	switch (action){
    	case 0:
    		rueckgabeWert="no direction";
    		directionPlayerB=0;
    		break;
    	case 1:
    		rueckgabeWert="up";
    		directionPlayerB=1;
    		break;
    	case 2:
    		rueckgabeWert="down";
    		directionPlayerB=2;
    		break;  
    	default:
    		rueckgabeWert="keine vorhandene Aktion ausgewählt";
    	}
    	System.out.println("say Hello meldet sich.");
    	panel.setDirection(action);
        return rueckgabeWert;
    }
     
    public static void main(String args[])throws RemoteException {    	
    	/*Servers IP --> fuer RMI*/
    	System.out.println("IP Adresse vom Server eingeben und Enter drucken.");
	    String currentIP = "";
	    InputStreamReader input = new InputStreamReader(System.in);
	    BufferedReader reader = new BufferedReader(input); 
	    try {currentIP = reader.readLine();} 
	    catch (IOException e1) {e1.printStackTrace();} 
    	
    	/* Security Manager --> fuer RMI */
    	if (System.getSecurityManager() == null) {
    		System.setSecurityManager (new RMISecurityManager());
    	}

    	/*RMI*/
        try {
            PingPong obj = new PingPong();
            Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
            LocateRegistry.createRegistry(1099);
            Registry registry = LocateRegistry.getRegistry(currentIP);
            registry.rebind("Hello", stub);
            System.err.println("Server ready");
        } catch (Exception e) {
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
        
        /* PingPong starten */
		SwingUtilities.invokeLater(
			new Runnable() {
				public void run() {
					PingPong thisClass = new PingPong();
					thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					thisClass.setVisible(true);
				}
			}
		);
    }
}

PanelPelota.java
Java:
package PingPong;
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class PanelPelota extends JPanel implements Runnable {
	private static final long serialVersionUID = 1L;
	
    /* (Start-) Positions */
	Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
	private int windowX= (int) (dim.getWidth()); 
	private int windowY= (int) (dim.getHeight());
	private int ballPositionX = 10; 
	private int ballPositionY = 100; 
	//Ship A (the left one)-> Player A
	private int shipAX=10; 
	private int shipAY=windowY/4;
	//Ship B (the right one)-> Player B
	private int shipBX=(windowX/2)-30; 
	private int shipBY=shipAY;
	
	Thread hilo;
	int derecha=5; // to the right
	int izquierda= -5; //to the left
	int arriba=5; // upward
	int abajo= -5; // down
	int ancho, alto; // Width and height of the ball
	// Scores
	int contPlay1=0, contPlay2=0;
	boolean player1FlagArr,player1FlagAba, player2FlagArr, player2FlagAba;
	boolean juego, gameOver;
	
	public PanelPelota(){
		juego=true;
		hilo=new Thread(this);
		hilo.start();
	}
	
	// Draw ball and ships
	public void paintComponent(Graphics gc){
		setOpaque(false);
		super.paintComponent(gc);
		
		// Draw ball
		gc.setColor(Color.black);
		gc.fillOval(ballPositionX, ballPositionY, 8,8);
		
		// Draw ships
		gc.fillRect(shipAX, shipAY, 10, 25);
		gc.fillRect(shipBX, shipBY, 10, 25);
		
		//Draw scores
		gc.drawString("Spieler 1: "+contPlay1, 25, 10);
		gc.drawString("Spieler 2: "+contPlay2, 150, 10);
		
		if(gameOver)
			gc.drawString("Game Over", 100, 125);
	}
	
	// Positions on X and Y for the ball
	public void dibujarPelota (int nx, int ny)
	{
		ballPositionX= nx; 
		ballPositionY= ny; 
		this.ancho=this.getWidth();
		this.alto=this.getHeight();
		repaint();
	}
	
    // Here we receive from the game container class the key pressed
	public void keyPressed(KeyEvent evt){
        switch(evt.getKeyCode()) {
            // Move ship 1
            case KeyEvent.VK_W :
            	player1FlagArr = true;
            	break;
            case KeyEvent.VK_S : 
            	player1FlagAba = true;
            	break;
                        
            // Move ship 2
            case KeyEvent.VK_UP:
            	player2FlagArr=true;
            	break;
           case KeyEvent.VK_DOWN:
        	   player2FlagAba=true;
            	break;
        }
    }
	
    //	Here we receive from the game container class the key released
    public void keyReleased(KeyEvent evt) {
        switch(evt.getKeyCode()){
	        // Mover Nave1
	        case KeyEvent.VK_W :
	        	player1FlagArr = false;
	        	break;
	        case KeyEvent.VK_S : 
	        	player1FlagAba = false;
	        	break;
	                    
	        // Mover nave 2
	        case KeyEvent.VK_UP:
	        	player2FlagArr=false;
	        	break;
	        case KeyEvent.VK_DOWN:
	    	   player2FlagAba=false;
	        	break;
        }
    }
    
    public void setDirection(int direct){
    	//direction=direct;
    	switch (direct){
	    	case 0: //no direction
	        	player2FlagArr=false;
	        	player2FlagAba = false;
	        	break;
	    	case 1: //up
	        	player2FlagAba = true;
	        	break;
	    	case 2://down
	        	player2FlagArr=true;
	        	break;
    	}
    }
    /**
     * 
     * @param debugAusgabe
     */
    public void debugSelf(String debugAusgabe){
    	System.out.println(debugAusgabe);
    }
    
    // Move player 1
    public void moverPlayer1()
    {
        if (player1FlagArr == true && shipAY >= 0)
            shipAY += abajo;
        if (player1FlagAba == true && shipAY <= (this.getHeight()-25))
            shipAY += arriba;
        dibujarPlayer1(shipAX, shipAY);
    }
    
    // Move player 2
    public void moverPlayer2(){
        if (player2FlagArr == true && shipBY >= 0){
            shipBY += abajo;
        }
        if (player2FlagAba == true && shipBY <= (this.getHeight()-25)){
            shipBY += arriba;
    	}
        dibujarPlayer2(shipBX, shipBY);
    }
    
    // Position on Y for the player 1
    public void dibujarPlayer1(int x, int y){
    	this.shipAX=x;
    	this.shipAY=y;
    	repaint();
    }
    // Position on Y for the player 2   
    public void dibujarPlayer2(int x, int y){
    	this.shipBX=x;
    	this.shipBY=y;
    	repaint();
    }
	
	public void run() {
		boolean izqDer=false;
		boolean arrAba=false;
		
		while(true){
			
			if(juego){
			
            // The ball move from left to right
           	if (izqDer){
				// a la derecha
				ballPositionX += derecha;
				if (ballPositionX >= (ancho - 8))
                    izqDer= false;
			} else {
				// a la izquierda
				ballPositionX += izquierda;
				if ( ballPositionX <= 0)
                    izqDer =  true;
			}
           	
           	
            // The ball moves from up to down
           	if (arrAba){
				// hacia arriba
				ballPositionY += arriba;
				if (ballPositionY >= (alto - 8))
                    arrAba= false;
			} else{
				// hacia abajo
				ballPositionY += abajo;
				if ( ballPositionY <= 0)
					arrAba =  true;
			}
           	dibujarPelota(ballPositionX, ballPositionY);
           	
            // Delay
			try { Thread.sleep(50);} 
			catch(InterruptedException ex){ }
			
			// Move player 1
			moverPlayer1();
			
            // Move player 2
			moverPlayer2();
//debugSelf("megTest ="+Boolean.toString(megTest));
			
            // The score of the player 1 increase
			if (ballPositionX >= (ancho - 8))
				contPlay1++;
                			
            // The score of the player 2 increase
			if ( ballPositionX == 0)
				contPlay2++;
                            			
			// Game over. Here you can change 6 to any value
                        // When the score reach to the value, the game will end
			if(contPlay1==6 || contPlay2==6){
				juego=false;
			    gameOver=true;
			}
			
			// The ball stroke with the player 1
			if(ballPositionX==shipAX+10 && ballPositionY>=shipAY && ballPositionY<=(shipAY+25))
				izqDer=true;
			
            // The ball stroke with the player 2
			if(ballPositionX==(shipBX-5) && ballPositionY>=shipBY && ballPositionY<=(shipBY+25))
				izqDer=false;
			}
		}
	}
}

sayHello wird erfolgreich aufgerufen und gibt auch erfolgreich die Daten an setDirection weiter.
Ich möchte den Wert der public variablen player2FlagArr und player2FlagAba ändern, jedoch wird diese Änderung nicht "gespeichert", weil ja eigentlich durch die run Methode nachgesehen wird welche wert diese Variablen haben.

Ich glaube es liegt an irgend einen (warschenlich sehr beschämenden) Denkfehler von mir, nur nach ein paar Tagen daran herumbasteln bin ich nicht weiter gekommen. Ich bin gerade ziehmlich ratlos wo der Fehler liegen könnt und wäre für jeden Tip dankbar.
Viele Grüße, Ermelyn

(Das urspüngliche PingPong Spiel hab ich aus dem Inet, dachte da werd ich schneller fertig, mein ziel is die Steuerung das Spiel über eine Webseite, das Spiel selbst is ned so wichtig. Game - A simple Pong ist die Quelle für das Spiel falls es jemanden interessiert)
 

Ermelyn

Mitglied
So falls es jemanden interessiert, ich hab die lösung und zwar hab ich 2 verschiedene Objekt erzeugt. Eins mit der GUI und eins mit RMI

Java:
 /*RMI*/
        try {
            [COLOR="Red"][B]PingPong obj = new PingPong();[/B][/COLOR]
            Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
            LocateRegistry.createRegistry(1099);
            Registry registry = LocateRegistry.getRegistry(currentIP);
            registry.rebind("Hello", stub);
            System.err.println("Server ready");
        } catch (Exception e) {
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
        
        /* PingPong starten */
        SwingUtilities.invokeLater(
            new Runnable() {
                public void run() {
                    [COLOR="Red"][B]PingPong thisClass = new PingPong();[/B][/COLOR]
                    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    thisClass.setVisible(true);
                }
            }
        );

Also einfach nur ein Objekt erzeugen und voila! Es funktioniert!
Java:
 /*RMI*/
final PingPong obj = new PingPong();
        try {
            Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
            LocateRegistry.createRegistry(1099);
            Registry registry = LocateRegistry.getRegistry(currentIP);
            registry.rebind("Hello", stub);
            System.err.println("Server ready");
        } catch (Exception e) {
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
        
        /* PingPong starten */
        SwingUtilities.invokeLater(
            new Runnable() {
                public void run() {
                    PingPong thisClass = obj;
                    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    thisClass.setVisible(true);
                }
            }
        );
 

Steven Hachel

Bekanntes Mitglied
Hallöle,

für mich stellt sich die Frage, ob der Ball evtl. nicht über den Server gesteuert werden sollte, damit deren Position bei beiden Spielern gleich ist. Könnte ja sein, dass bei unrunder Laufzeit beider Systeme die Position des Spielballs bei längerer Spielzeit sehr stark variiert, oder?

viele Grüße
 

Ermelyn

Mitglied
Ich weiß es is nicht unbedingt schön gemacht, der Server sollte noch ausgelagert werden, ... Beide Spieler greifen über den Server mittels RMI auf haargenau das gleich Objekt zu das die GUI erzeugt und die Logik für das Spiel bereit stellt und die Spieler können auf die gleichen Daten zugreifen, dh. es ist nicht möglich das 2 "Versionen" vom Spiel entstehen. Das Spiel selbst wird auf einem Öffentlichen Bildschirm angezeigt, die Spieler selbst sehen auf ihren "persönlichen" Screens nur 2 Buttons für auf und ab, den Teil hab ich hier nicht gepostet. Ich hoff das hat deine Frage beantwortet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
A Layoutwechsel über RadioButtons AWT, Swing, JavaFX & SWT 3
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
J Spielfelder auch über die Tastatureingabe (1…9) ansteuern (Tic Tac Toe) AWT, Swing, JavaFX & SWT 2
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView Edit Mode über F2 AWT, Swing, JavaFX & SWT 13
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
C JavaFX ScrollPane schießt über das Ziel hinaus... AWT, Swing, JavaFX & SWT 1
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
C JavaFX GUI - Entscheidung über Framework AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
Augenblau JavaFX Externe Schriftart über CSS ansprechen und zuweisen AWT, Swing, JavaFX & SWT 5
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
P Vorteile von Tooltip nutzen (wird über allen anderen Objekten angezeigt) AWT, Swing, JavaFX & SWT 3
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
D Swing Letzte Zeile einer JTable nicht über RowSorter sotieren AWT, Swing, JavaFX & SWT 2
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
R Bewglichen Rahmen über einem Bild AWT, Swing, JavaFX & SWT 3
P Listenelemente über Checkbox löschen AWT, Swing, JavaFX & SWT 6
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
K Swing JButton über JLabel AWT, Swing, JavaFX & SWT 6
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
C Java-applikation über Fullscreen AWT, Swing, JavaFX & SWT 4
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
S JTable Filter nach Wort oder Wortteil über ganze Tabelle AWT, Swing, JavaFX & SWT 5
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
A Swing Gleichmäßige Verteilung der Tabellenzeilen über den gesammten Tabellenbereich AWT, Swing, JavaFX & SWT 5
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
P Swing Componente über Rahmen hinaus zeichnen AWT, Swing, JavaFX & SWT 2
K JButton nur dann aktivieren, wenn die Mouse 3 Sek. über dem Button bleibt AWT, Swing, JavaFX & SWT 2
B JFrame: Benachrichtung über Größenänderung AWT, Swing, JavaFX & SWT 4
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
R 2D-Grafik Messdiagramm - Diagramm über Zeit AWT, Swing, JavaFX & SWT 5
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben