2016-05-31 71 views
0

我正在嘗試使用Java創建Calculator應用程序。現在我正在用所有按鈕和麪板創建窗口來顯示點擊的數字。 不知怎的,我添加到框架的面板不顯示。任何人都可以幫助我。我在做什麼錯誤?Panel在Java框架中不可見

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); 
    } 

} 

回答

1

您的面板不顯示,因爲它是空的,並且您沒有設置可以使其可見的特定佈局。

例如: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); 
} 

試試這個:

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); 
} 

你會看到你的面板角落找尋一個JLabel創建

+0

我不能將它添加到現有的框架沒有佈局?我還沒有意識到佈局。 –

+0

佈局用於說明組件將如何放置。您應該每次都使用它,例如,如果您查看GridLayout或FlowLayout,這不是很難。 – MedAl

+0

我的不好。我只是理解你設置一個空佈局,以便將這些組件放置在它們的座標上。那麼唯一的問題是:你的面板是空的。您將按鈕添加到框架,而不是面板 – MedAl