Java JFrame und JPanel

1 Antwort

Ok ich hab das Problem zwar inzwischen gelöst, indem ich einen Thread aus der Klasse Game gemacht hab, da ich irgendwie so ein Gefühl hatte dass die "fast" endlosschleife dort die ja die Spielerbewegungen updated und alles damit zu tun hat, trotzdem ist mir noch nicht klar warum das Bild dann weiß ist!? Ich hatte doch sogar zuvor das alte Frame geschlossen!!

Java integer Variable soll sich +1 addieren

Hallo. Wie kann ich eine Integer Variable mit sich selbst mit 1 addieren?? Ich will, dass mein Knopf eine 0 anzeigt, welche beim Klicken zu einer 1 wird, beim zweiten klicken zu einer 2, beim dritten zu einer 3 usw usw usw.

Das hier ist meine Variablen-class und bei Zeile 3 kommt der Fehler, dass die Variable doppelt da ist. Genau so geht das aber in Python Batch usw. Es muss also auch in Java gehen.

public final class Variablen{
         public static int nummer(){
          int x = x+1;
         return x;
        } 
}

Hoffentlich kann mir wer helfen. PS: Die Variable wird aus einer anderen Class abgerufen mit folgendem Text:

package de.Leon.java;

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Fenster extends JFrame

    implements ActionListener{
    
    private JButton  Knobb = new JButton("Drücken");
    private JButton DesIsAuchEnKnobb = new JButton("Zahlen");
    
    public Fenster(){
        
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Knobb.addActionListener(this);
    DesIsAuchEnKnobb.addActionListener(this);
    
    getContentPane().add(Knobb);
    getContentPane().add(DesIsAuchEnKnobb, BorderLayout.SOUTH);
    
    pack();
    
    setLocationRelativeTo(null);
    
    setVisible(true);
    
    }

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

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==Knobb){
            Knobb.setText("Gedrückt");
        }
        if (e.getSource()==DesIsAuchEnKnobb) {
            DesIsAuchEnKnobb.setText("" + Variablen.nummer());
        }
    }
    
}

Ich bin noch am Java lernen und kann also nicht sonderlich viel^^

Ich benutze Eclipse

...zur Frage

Wie erzwingt man in Java den Focus auf ein Fenster?

Bei mir blinkt es nur in der Taskleiste, wenn ich aus der JPanel klasse die Methode

requestFocus() oder grabFocus() verwende. Das wars.

...zur Frage

Warum wird das JLabel nicht angezeigt?

Ich möchte, damit es später nicht so viel auf einmal wird die verschiedenen Bestandteile des JFrames in mehrer Klassen schreiben. In diesem Fall habe ich ein Jframe, in dem ein JPanel geladen wird, in dem ein JLabel ist. Wenn ich das Programm allerdings ausführe, wird das JLabel nicht angezeigt.

Bilder: https://drive.google.com/drive/folders/1CoH93gGGE0h0hOfwpI5dMur3USVmz4sz?usp=sharing

Hier mal die Klassen:

Main.java

import javax.swing.JFrame;

public class Main {

	public static void main(String[] args) {
		JFrame frame = new DiyLoopFrame();
	}
}

DiyLoopFrame.java (das JFrame)

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DiyLoopFrame extends JFrame {
	
	//constructor
	public DiyLoopFrame() {
		setSize(880, 650);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null); 
		setTitle("DiyLoop");
		setResizable(false);
		setLayout(null);
		JPanel fc = new FrameControls();
		
		//components
		add(fc); //add FrameControls
		addKeyListener(new KeyHandler()); //get Keys
		
		//loading complete!
		setFocusable(true); //set focus to jframe
		setVisible(true); //make visible
	}
}

FrameControls.java (das JPanel)

import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FrameControls extends JPanel {
	
	private JLabel label_schriftart;
	private JLabel label_clickoptions;
	
	public FrameControls() {
		//add components
		initComponents();
		add(label_clickoptions);
		
		//loading complete!
		setVisible(true);
	}
	
	private void initComponents() {
		//schriftart
		label_schriftart = new JLabel("");
		Font schriftart = (label_schriftart.getFont().deriveFont(Font.BOLD, 15));
		
		//label clickoptions
		label_clickoptions = new JLabel("click options");
		label_clickoptions.setFont(schriftart);
		label_clickoptions.setBounds(5, 5, 500, 11);
	}
}

.

...zur Frage

Wie kann ich in Java bei einem JLabel einen Zeilenumbruch erstellen?

Ich möchte die JLabel "Zeile1" und "Zeile2" untereinander schreiben... weiß aber nicht wie ich das anstellen soll

public class Test {
public static void main(String[] args) {
    JFrame fenster = new JFrame();
    setupContent(fenster);
    fenster.setSize(500,500);                                                   
    fenster.setMinimumSize(new Dimension(100,100));                                          
    fenster.setVisible(true);                                                       
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                                         


}

private static void setupContent(JFrame fenster) {
    JPanel content = new JPanel ();
    JLabel Zeile1= new JLabel("Zeile1");
    JLabel Zeile2= new JLabel("das hier soll in die zweite Zeile!");
    content.add(Zeile1);
    content.add(Zeile2);
    fenster.setContentPane(content);
    
}

}


...zur Frage

2 JPanels an der gleichen Stelle, Jeweils 1 in den Vordergrund setzen

Hallo, ich habe ein Programm mit diesem (gekürzten) Quellcode:

package spielPackage; import javax.swing.*; public class Test2 extends JFrame { private static final long serialVersionUID = 1L; JPanel startMenuPanel; JButton spielStartButton; JPanel gameMenuPanel; JButton zumStartMenuButton;

public Test2()
{
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("Hammer Spiel");
    this.setSize(1000,600);
    this.setLocationRelativeTo(null);
    startMenuPanel = new JPanel();
    spielStartButton = new JButton("Spiel starten");
    startMenuPanel.add(spielStartButton);
    this.add(startMenuPanel);
    gameMenuPanel = new JPanel();
    zumStartMenuButton = new JButton("zum Startmenü");
    gameMenuPanel.add(zumStartMenuButton);
    this.add(gameMenuPanel);
}

public void startMenu()
{   
    gameMenuPanel.setVisible(false);
    startMenuPanel.setVisible(true);
    this.setVisible(true);
}

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

Jetzt will ich, dass durch die startMenu() - Methode das JPanel startMenuPanel sichtbar wird, wenn ich das Programm ausführe, seche ich jedoch nur das JFrame. Was muss ich ändern, dass ich dann tatsächlich das startMenuPanel sehe? Was muss ich machen, wenn ich das gameMenuPanel dann wieder sehen will?

Danke

...zur Frage

Wie kann ich bei Java ein Bild als JLabel einfügen?

Mein aktueller Stand:

public class Fenster1 {
  public static void main(String[] args) {
    JFrame fenster = new JFrame();
    setupContent(fenster);

    fenster.setSize(500, 500);
    fenster.setMinimumSize(new Dimension(100, 100));
    fenster.setVisible(true);
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  private static void setupContent(JFrame fenster) {
    JPanel content = new JPanel();
    JLabel Bild = new JLabel("hier soll das Bild hinkommen");
    content.add(Bild);
    fenster.setContentPane(content);
  }
}

PS.: Das Bild ist auf dem Desktop unter Bilder als smyley.jpg gespeichert.

...zur Frage

Was möchtest Du wissen?