Problem mit JFrame

Code46

Erfahrenes Mitglied
Hi leute,

ich habe gerade ein prolem mit dem Jframe. ich will in dem Jfram ein Textarea und ein button hinzufügen.Jedoch wenn ich dies mache wird der Button so groß wie der JPanel.

Ich habe es versucht doch trotzdem komme ich dort nicht weiter
Hier ist mein code

Code:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JMenuBarBeispiel implements ActionListener {
     
     JFrame applikation;
     Container container;
     JMenuBar menueLeiste;
     JMenu file;
     JMenu playlist;
     JMenuItem openplaylist;
	 JMenuItem saveplaylist;
     JMenuItem exit;
     JMenuItem checkplaylist;
	 JMenuItem createplaylist;
	 JMenuItem updateplaylist;
     JTextArea textarea;
	 JLabel dj;
	 TextArea displayPlaylist;


	
     
    public JMenuBarBeispiel() {
          applikation = new JFrame("JMenuBar Beispiel");
          container = applikation.getContentPane();
          applikation.setTitle("Jukebox");
		  applikation.setSize(485,550);
		 
		  // Menüleiste erzeugen
          menueLeiste = new JMenuBar();
		           dj = new JLabel(new ImageIcon("dj.gif"));
				   displayPlaylist = new TextArea(8,60);
         
          
          // Menüelemente erzeugen
          file = new JMenu("File");
          playlist = new JMenu("Playlist");
          
          // Untermenüelemente erzeugen
          openplaylist = new JMenuItem("Open Playlist");
          openplaylist.addActionListener(this);

		  saveplaylist = new JMenuItem("Save Playlist");
          saveplaylist.addActionListener(this);

          exit = new JMenuItem("Exit");
          exit.addActionListener(this);

          checkplaylist = new JMenuItem("Check Playlist");
          checkplaylist.addActionListener(this);

		  createplaylist = new JMenuItem("Create Playlist");
          createplaylist.addActionListener(this);

		  updateplaylist = new JMenuItem("Update Playlist");
          updateplaylist.addActionListener(this);
		   
          
          // Menüelemente hinzufügen
          menueLeiste.add(file);
          menueLeiste.add(playlist);
          
          // Untermenüelemente hinzufügen
          file.add(openplaylist);
		  file.add(saveplaylist);
          file.add(exit);

          playlist.add(checkplaylist);
		  playlist.add(createplaylist);
		  playlist.add(updateplaylist);

          // Textfeld erzeugen
          //textarea = new JTextArea();
		  //textarea.setBackground(Color.gray);
		  
          
          applikation.add(menueLeiste, BorderLayout.NORTH);
		  applikation.add(dj);
		  applikation.add(displayPlaylist);
    
          applikation.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          applikation.setVisible(true);
		  applikation.setResizable(false);
     }
     
	

     public void actionPerformed(ActionEvent object) {
        if (object.getSource() == openplaylist){
               System.out.println("öffnen wurde angeklickt");

          }
          if (object.getSource() == exit){
               System.exit(0);
          }

          
          if (object.getSource() == createplaylist){
               new CreatePlaylist();
          }
		  
		  
     }
     
     public static void main(String[] args) {
          new JMenuBarBeispiel();
     }
}
 
Du hast hier:
Java:
applikation.add(menueLeiste, BorderLayout.NORTH);
applikation.add(dj);
applikation.add(displayPlaylist);
einmal BorderLayout.NORTH geschrieben und zweimal nichts. Versuche mal, beim Hinzufügen des Buttons z.B. BorderLayout.SOUTH zu schreiben. ;)
Bei mir hat das einwandfrei funktioniert.
 
Java:
applikation.add(menueLeiste, BorderLayout.NORTH);

Ansich ist daran nichts verkehrt, aber ich empfehle

Java:
applikation.setJMenuBar(menueLeiste);

So lässt es sich einfacher mit dem restlichen Inhalt arbeiten, wenn dieser nicht mit dem BorderLayout angeordnet werden soll.
 
Zuletzt bearbeitet von einem Moderator:
Zurück