String in JFrame ausgeben

Rockfreak

Mitglied
Wie schon in der Überschrift gesagt, möchte ich Texte in meinem JFrame ausgeben.
Ich habe einen kleinen MusicPlayer gebastelt und möchte jetzt die Knöpfe beschriften.
Habe alles soweit ich wusste gemacht aber die Schrift wird nicht ausgegeben und Fehlermeldungen gibt es auch nciht.

Hier mal der Code
Java:
import javax.swing.*;
import javax.swing.JTextField;
import java.awt.*;

public class NewWindow extends JFrame  
{
    protected static final long serialVersionUID = 1;
    protected ImageIcon play = new ImageIcon(NewWindow.class.getResource("play.png"));
    protected ImageIcon stop = new ImageIcon(NewWindow.class.getResource("stop.png"));
    protected ImageIcon pause = new ImageIcon(NewWindow.class.getResource("pause.png"));
    protected ImageIcon eject = new ImageIcon(NewWindow.class.getResource("eject.png"));
    private JButton buttonplay = new JButton (play);
    private JButton buttonstop = new JButton (stop);
    private JButton buttonpause = new JButton (pause);
    private JButton buttoneject = new JButton (eject);
    JLayeredPane ebene;
    
    // Schrift über/unter den Buttons
     private String ausgabeText="Play";
	 private JTextField ausgabe= new JTextField(ausgabeText, 10);
 	// Textfelder Font definieren
  	Font textFont = new Font ("Square 721 BT", NORMAL, 20);
    
      public NewWindow()                                                                    
        {
                 super("MusicPlayer");      						// Text oben in der Leiste                                                     
                 setSize(700,200);                                  // Fenster Größe
                 setLocation(300,300);                              // Wo sich das Fenster beim starten befinden soll                     
                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    // Schließe Fenster und Programm beim beenden 
                 setBackground(Color.LIGHT_GRAY);
                 setLayout(null);
                 
                 MyJPanel mp = new MyJPanel();						// initialisiert das Panel für den Hintergrund
                 mp.setLayout(null);
                 
                 ebene = this.getLayeredPane();
                 ebene.add(mp, JLayeredPane.FRAME_CONTENT_LAYER, 0);
                 
                 int buttonx=100;									// x-Koordinate für die Buttons
                 int buttony=110;									// y-Koordinate für die Buttons
                 int buttonw=48;									// größe der Buttons
                 int buttonh=48;									// größe der Buttons
                 mp.setBounds(0,0,700,200);
                 buttonstop.setBounds(200, buttony, buttonw, buttonh);
                 buttonstop.setBorder(null);
                 buttoneject.setBounds(50, buttony, buttonw, buttonh);
                 buttoneject.setBorder(null);
                 buttonplay.setBounds(buttonx, buttony, buttonw, buttonh);
                 buttonplay.setBorder(null);
                 buttonpause.setBounds(150, buttony, buttonw, buttonh);
                 buttonpause.setBorder(null);
                 mp.add(buttoneject);
                 mp.add(buttonstop);
                 mp.add(buttonplay);
                 mp.add(buttonpause);    
                 buttonstop.setActionCommand("Stop");                               
                 buttoneject.setActionCommand("Öffnen");                                
                 buttonplay.setActionCommand("Start");
                 buttonpause.setActionCommand("Pause");

             	//Groesse, Positionen und Fonts der randlosen Textfelder
         	   int textx=100;
         	   int texty=250;
         	   int textw=100;
         	   int texth=100;
              
         	  // textx=butx+butw;
         	  // textw=200;
         	   ausgabe.setBounds(textx,texty,textw,texth);
         	   ausgabe.setFont(textFont);
         	   ausgabe.setBackground(Color.black);
              //  ausgabe.setHorizontalAlignment(JTextField.LEFT); 
         	  //  ausgabe.setHorizontalAlignment(JTextField.RIGHT); 
         	   ausgabe.setBorder(null);
               ausgabe.setOpaque(false);
               
               add(ausgabe);  // Textausgeben "play"
                                
                 // Menü-Leiste
                 MenuBar mb = new MenuBar();    
                        
                 // Ein Menü
                 Menu m1 = new Menu("Datei");
                 mb.add(m1);
 
                 // Menüeinträge
                 MenuItem oeff = new MenuItem("Öffnen");
                 MenuItem schl = new MenuItem("Schließen");
                 
                 // Menue Action
                 MenueSchliessenService menueSchliessen = new MenueSchliessenService(this);
                 schl.addActionListener(menueSchliessen);
                 // Datai auswählen
                 OeffnenDialogClass odc = new OeffnenDialogClass();
                 oeff.addActionListener(odc);
                 // Datei abspielen
                 setMenuBar(mb);
                 m1.add(schl);  
                 m1.add(oeff); 
                 // Actionlistener für die Buttons   
                 buttoneject.addActionListener(odc);
                 buttonplay.addActionListener(odc);
                 buttonstop.addActionListener(odc);
                 buttonpause.addActionListener(odc); 
        }

}
 
Schrift bekommt man in Buttons mit setText(String).
Aber wozu noch Schrift, wenn du doch schon Icons hast?
 
mache ich das nicht genau hier:
Java:
// Schrift über/unter den Buttons
     private String ausgabeText="Play";
	 private JTextField ausgabe= new JTextField(ausgabeText, 10);
 
such doch mal ne Stunde lang im Internet nach JLabel mit Icon,
in Tutorials oder Beispielen kommst du vielleicht an deinem gesuchten Ergebnis vorbei..

zum JTextField:
du fügst es direkt in das JFrame ein, während die Buttons im MyPanel landen,
darin passt die Höhe von 250 auch nicht besonders gut

jetzt sehe ich dass du das JTextField vielleicht extra unter das MyPanel platzieren willst,
auch dafür ist es zu tief bzw. da ist gar kein Platz vorhanden,
Play wird anscheinend im unteren möglichen Bereich gemalt,
bei y = 250 und Höhe 100 musst du schon bis zu Position 350 runterschauen, dein JFrame ist aber auch wieder in der Höhe auf 200 begrenzt..
 
na so langsam wirds 🙂
Wenn ich das JFrame auf den Wert y= 400 setze und text y auf 170 dann seh ich schon mal den text im nicht sichtbaren bereich, wie du sagtest. Wenn ich ihn jetzt hoch setzte sehe ich noch kurz beim Start den Text und dann wird er wohl vom hintergrund übermalt, wo setzte ich den text denn am besten an, so dass er auch gezeigt wird?


Ach so, ich will nicht wissen wieviel stunden ich schon gegoogelt hab aber wenn man die richtigen stichworte nicht kennt...

danke schon mal
 
wieso 170 wenn MyPanel bis 200 reicht? ich würde darunter anfangen, z.B. 210 und erstmal als Höhe nur 30 oder so, für eine Zeile reicht das vielleicht,

> Ach so, ich will nicht wissen wieviel stunden ich schon gegoogelt hab aber wenn man die richtigen stichworte nicht kennt...

deswegen sage ich ja jetzt, suche nach 'JLabel mit Icon',
Google

erster Link
Adding an Icon to a JLabel Component | Example Depot
dort steht
Java:
// Create a label with text and an icon; the icon appears to the left of the text 
JLabel label = new JLabel("Text Label", icon, JLabel.CENTER);
schon könnte dir eine vielleicht bisher unbekannte Art von Platzierung innerhalb des JLabels auffallen,
spätestens jetzt den zugehörigen Konstruktor nachschlagen (schon vorher hätte in der API nach Möglichkeiten gesucht werden können),
führt zum Begriff 'horizontalAlignment', da ist bestimmt vertical auch nicht fern, das sind mindestens neue gute Suchbegriffe

ich sage noch nicht dass das gleich dein Problem löst, nur dass du mit wenig Arbeit selber viel erreichen kannst,
wenn du dann immer noch fragen musst klingt
'ich habe JLabel mit verschiedenen Alignment-Optionen ausprobieren, aber wie genau erreicht man xy?'
schon viel angenehmer als nur 'wie macht man [eines von tausend Problemen an diesem Tag]?'
 
Habe alles so gemacht, wie du es empfohlen hast. Aber ich bekomme nur Fehlermeldungen.

Bei:
Java:
   JLabel buttonstop = new JLabel("STOP", stop, JLabel.CENTER);
macht er zwar den Button aber neben dem Button ist nur ein schwarzer punkt (rechts daneben)
Bei:
Java:
buttonstop.setVerticalTextPosition(JLabel.BOTTOM);
buttonstop.setHorizontalTextPosition(JLabel.CENTER);
kommen nur noch Fehlermeldungen in Eclipse.
Und so steht es in allen Anleitungen...
 

Zurück
Oben