Swing Objekte werden nicht angezeigt

Errschaffer

Mitglied
Hallo,

ich habe zu vor in C++ programmiert (Hobby - Spieleentwicklung) und schaue mir jetzt auch mal Java teils aus beruflichen teils auch aus privaten Gründen an weil man mit Java doch ziehmlich einfach grafischen Anwendungen erzeugen kann und man dann mehr Zeit hat für die Core Funktionen.

Naja nur irgendwie werde meinen schönen Labels und Buttons nicht angezeigt 🙁

Java:
public class Window extends JFrame
{
    JFrame TheWindow;

    JLabel Welcome;
    JButton NumberOne;

   public void initWindow (String name,int height,int width)
    {
       TheWindow = new JFrame ();
       TheWindow.setSize(height,width);
       TheWindow.setTitle(name);
       TheWindow.setDefaultCloseOperation(TheWindow.EXIT_ON_CLOSE);
       TheWindow.setVisible(true);


       Welcome.setText("Willkommen bei meinem kleinen Taschenrechner programmiert in Java und Swing");
       Welcome.setSize(100,100);
       Welcome.setVerticalTextPosition(JLabel.TOP);
       Welcome.setHorizontalTextPosition(JLabel.CENTER);
       TheWindow.add(Welcome);
       TheWindow.pack ();
       Welcome.setVisible(true);
       
       
       NumberOne.setText("1");
       TheWindow.add(Welcome);
       TheWindow.pack ();
       NumberOne.setVisible(true);
       







    }



}

Und keiner sagt jetzt was über die die qualität des Codes das wurde nur mal si schnell hingeschrieben um erstmal zu sehen wir das geht 😀
 
Und keiner sagt jetzt was über die die qualität des Codes das wurde nur mal si schnell hingeschrieben

Gut, dann spare ich mir mal die Hinweise auf die Schreibweise von Variablen 😉 Nun zu deinem
Problem:

Du musst erst die einzelnen Komponenten einrichten und dem Hauptfenster hinzufügen und erst
am Schluss das Hauptfenster packen und anzeigen.
 
Also erstmal danke, es funktioniert soweit 🙂

Nur mein Button nimmt das ganze Fenster ein. Ich weiss das Swing von standard aus mit Borderlayouts arbeitet und deswegen wird , wenn man Center als Position angibt das ganze Fenster eingenommen. Soweit hab ich Google schonmal angeworfen 😉

Nur wenn ich bei der Horizontolen Position was anderes angebe als Center wird nichtmal mehr das Fenster angezeigt 🙁.

Hier mal der aktuelle Code.

Java:
public class Window extends JFrame
{
    JFrame TheWindow;

    JLabel Welcome;
    JButton NumberOne;

   public void initWindow (String name,int height,int width)
    {
       TheWindow = new JFrame ();
       TheWindow.setSize(height,width);
       TheWindow.setTitle(name);
       TheWindow.setDefaultCloseOperation(TheWindow.EXIT_ON_CLOSE);
   

       Welcome = new JLabel ();
       Welcome.setText("Willkommen bei meinem kleinen Taschenrechner programmiert in Java und Swing");
       Welcome.setSize(100,100);
       Welcome.setVerticalTextPosition(JLabel.TOP);
       Welcome.setHorizontalTextPosition(JLabel.CENTER);
       TheWindow.add(Welcome);
    
       
       
       NumberOne = new JButton ();
       NumberOne.setText("1");
       NumberOne.setSize(10,10);
       NumberOne.setVerticalTextPosition(JButton.BOTTOM);
       NumberOne.setHorizontalTextPosition(JButton.CENTER);
       TheWindow.add(NumberOne);

       TheWindow.pack ();
      

     
       TheWindow.setVisible(true);
       
      
       







    }



}
 
Java:
       Welcome.setVerticalTextPosition(JLabel.TOP);
       Welcome.setHorizontalTextPosition(JLabel.CENTER);

Mit diesen Befehlen setzt du auch die Position bzw. Ausrichtung des Textes des Elementes. Vielleicht
möchtest du dir das hier mal durchlesen 😉
 
Also das Design für meinen Taschenrechner hab ich jetzt soweit 🙂

Nur will das Fenster nicht in die Größe in der ich es will. Es ist immer nur gerade so groß wie die Objekte in dem Fenster.



Hier etwas Code:

Java:
public class Window extends JFrame
{
    JFrame TheWindow;


    JButton ButtonNumber1;
    JButton ButtonNumber2;
    JButton ButtonNumber3;
    JButton ButtonNumber4;
    JButton ButtonNumber5;
    JButton ButtonNumber6;
    JButton ButtonNumber7;
    JButton ButtonNumber8;
    JButton ButtonNumber9;
    JButton ButtonNumber0;

    JButton ButtonNumberAdd;
    JButton ButtonNumberSub;
    JButton ButtonNumberMulti;
    JButton ButtonNumberDiv;
    JButton ButtonNumberSum;

    JTextField Ergebnis;
    JTextField Footer;

    
    JPanel NumberBlock;
    JPanel Top;
    JPanel Bottom;






   public void initWindow (String name,int height,int width)
    {

    
      

       TheWindow = new JFrame ();
       TheWindow.setSize(800,600);
       TheWindow.setTitle(name);
       TheWindow.setDefaultCloseOperation(TheWindow.EXIT_ON_CLOSE);

       NumberBlock = new JPanel (new GridLayout (4,2));
       TheWindow.add(NumberBlock,BorderLayout.CENTER);

       Top = new JPanel (new BorderLayout ());
       TheWindow.add(Top,BorderLayout.PAGE_START);

       Bottom = new JPanel (new BorderLayout ());
       
       TheWindow.add(Bottom,BorderLayout.PAGE_END);

       Footer = new JTextField ();
       Footer.setSize(100,100);
       Footer.setText("(c)Oliver Schmidt");
       Bottom.add(Footer,BorderLayout.PAGE_END);


       Ergebnis = new JTextField ();
       Ergebnis.setSize(100,100);
       Top.add(Ergebnis,BorderLayout.PAGE_START);

       ButtonNumber1 = new JButton ();
       ButtonNumber1.setText("1");
       ButtonNumber1.setSize(10,10);
       NumberBlock.add(ButtonNumber1);

       ButtonNumber2 = new JButton ();
       ButtonNumber2.setText("2");
       ButtonNumber2.setSize(10,10);
       NumberBlock.add(ButtonNumber2);
  

       /* noch mehr buttons .............*/




       TheWindow.pack ();
      

     
       TheWindow.setVisible(true);
       
      
       
     }



}
 
[JAVA=83]TheWindow.pack ();[/code]

sorgt dafür das eine "preferredSize" berechnet wird und das Fenster auf eben diese eingestellt wird.
Siehe auch: Javadoc Wenn du deine GUI selber gestalten willst bietet sich der GUI-Builder ("Matisse") von
Netbeans dafür an.
 

Neue Themen


Zurück
Oben