Warum zeigt er den Button in Java im JFrame nicht an?

1 Antwort

Du fügst zwar den Button in ein Panel ein und das Panel auch in den Frame, aber wo bestimmst Du denn die Größe das Panels?

Ich würde Dir empfehlen, Dich mit Layout-Managern zu beschäftigen. Dann hast Du solche Probleme meist nicht.

https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html


3

Hier habe ich dem JFrame den panel hinzugefügt:

 f2.add(p);
0
46
@VinceJosh

Das stimmt schon, aber eine Größe setzt Du nicht für das Panel. Mag sein, dass das ein Problem ist.

Viel problematischer ist aber: Du fügst p sowohl in f, als auch in f1, als auch in f2 ein. Das geht natürlich nicht. Ein Control kann immer nur einen Parent haben.

Willst Du in allen 3 ein Panel mit einem Knopf, brauchst Du drei Panels und 3 Knöpfe.

0
3
@VinceJosh

nur jetzt zeigt er meinen Label nicht mehr an.

0
46
@VinceJosh

Ich sag ja: Verwende Layout-Manager. Standardmäßig ist in JPanel ein FlowLayout aktiv.

0

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

Java / Swing: Problem mit dispose();?

Ich habe ein Problem mit folgendem Code. Ich will, dass, wenn man das JMenuItem: "Schliesen" anklickt, sich das Programm beendet.

Code:

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*;

public class FrmMain extends JFrame implements ActionListener {
  private JPanel contentPane;

  public FrmMain() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 600, 456);

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    JMenu mnDatei = new JMenu("Datei");
    menuBar.add(mnDatei);

    JMenuItem mntmSchliesen = new JMenuItem("Schliesen");
    mnDatei.add(mntmSchliesen);
    mntmSchliesen.addActionListener(this);

    contentPane = new JPanel();

    class Bob implements ActionListener {
      @Override
      public void actionPerformed(ActionEvent event) {
        if (event.getSource() == mntmSchliesen)
          dispose(); // *** Mein Problem ***
      }
    }
  }

  public static void main(String[] args) {
    FrmMain frame = new FrmMain();
    frame.setVisible(true);
  }
}
...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?