2016-05-31 10 views
0

Ich versuche, eine Rechneranwendung mit Java zu erstellen. Für jetzt erstelle ich das Fenster mit allen Buttons und Panel um die angeklickten Nummern anzuzeigen. Irgendwie wird das Panel, das ich dem Frame hinzugefügt habe, nicht angezeigt. Könnte mir jemand helfen? Was ist der Fehler, den ich mache?Panel nicht sichtbar in Java Frame

package com.wells.eda; 
import java.awt.*; 
public class Calc { 
    public static void main(String[] args) { 
    Calculator c = new Calculator(); 

    try{ 
     Frame fm= c.NewFrame("Calculator",330,310); 
     c.NewButton(fm, "1",10,110); 
     c.NewButton(fm, "2",90,110); 
     c.NewButton(fm, "3",170,110); 
     c.NewButton(fm, "4",10,160); 
     c.NewButton(fm, "5",90,160); 
     c.NewButton(fm, "6",170,160); 
     c.NewButton(fm, "7",10,210); 
     c.NewButton(fm, "8",90,210); 
     c.NewButton(fm, "9",170,210); 
     c.NewButton(fm, "00",10,260); 
     c.NewButton(fm, "0",90,260); 
     c.NewButton(fm, "Reserved",170,260); 
     c.NewButton(fm, "+",250,110); 
     c.NewButton(fm, "-",250,160); 
     c.NewButton(fm, "*",250,210); 
     c.NewButton(fm, "/",250,260); 
     c.NewPanel(fm); 
     //Thread.sleep(3000); 
     //fm.dispose(); 

     } 
    catch(Exception e) 
     { 
     System.out.println("Exception happened"); 
     } 
    } 

} 
class Calculator{ 

    public Frame NewFrame(String name,int length, int width) 
    { 
     Frame fm = new Frame(name); 
     fm.setLayout(null); 
     fm.setResizable(false); 
     fm.setSize(length,width); 
     fm.setVisible(true); 
     return(fm); 
    } 
    public void NewButton(Frame fm,String number,int xcordinate,int ycordinate) throws Exception 
    { 
     Button b = new Button (number); 
     b.setBounds(xcordinate,ycordinate,70,40); 
     //b.setVisible(true); 
     fm.add(b);   
    } 
    public void NewPanel(Frame fm) 
    { 
     Panel p= new Panel(null); 
     fm.add(p); 
     //p.setSize(100, 100); 
     p.setBounds(10,10,250,100); 
     p.setName("Panel"); 
     p.setVisible(true); 
    } 

} 

Antwort

1

Ihre Anzeige wird nicht angezeigt, da sie leer ist und Sie kein bestimmtes Layout festgelegt haben, das sie sichtbar machen könnte.

Beispiel: fm.setLayout (null); ==> fm.setLayout (new BorderLayout());

public void NewPanel(Frame fm) 
{ 
    Panel p= new Panel(null); 
    fm.add(p); 
    //p.setSize(100, 100); 
    p.setBounds(10,10,250,100); 
    p.setName("Panel"); 
    p.setVisible(true); 
} 

versuchen Sie dies:

public void NewPanel(Frame fm) 
{ 
    Panel p= new Panel(null); 
    fm.add(p); 
    //p.setSize(100, 100); 
    p.setBounds(10,10,250,100); 
    p.setName("Panel"); 
    p.add(new JLabel("Test")); 
    p.setVisible(true); 
} 

Sie Ihren Panel rund um den JLabel sehen erstellt

+0

kann ich diesen Add Frame vorhandenen ohne Layout-? Ich kenne die Layouts noch nicht. –

+0

Layouts zeigen an, wie die Komponenten platziert werden. Sie sollten es jedes Mal verwenden, das ist nicht sehr schwierig, wenn Sie zum Beispiel das GridLayout oder das FlowLayout betrachten. – MedAl

+0

Mein schlechtes. Ich habe gerade verstanden, dass Sie ein Null-Layout festlegen, um die Komponenten mit ihren Koordinaten zu platzieren. Dann ist das einzige Problem: Ihr Panel ist leer. Sie fügen die Schaltflächen zum Rahmen hinzu, nicht zum Panel – MedAl

Verwandte Themen