2012-12-05 108 views
1

我正在为一个计算器做一个简单的布局,实际上我是java新手和学习基础知识。我的问题是,当我运行这个代码时,只有一个JFrame打开,其他面板的按钮不显示。 PLz的帮助,我的地方出错了。Jframe中的JPanels没有显示

import java.awt.*; 
    import javax.swing.*; 

    public class Layouts extends JFrame{ 
     public Layouts(){ 
      super("Calculator"); 
      setLookAndFeel(); 
      setSize(350,350); 

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      BorderLayout border = new BorderLayout(); 
      setLayout(border); 

      GridLayout numbers = new GridLayout(2,2); 
      row2.setLayout(numbers); 
      row2.add(one); 
      row2.add(two); 
      row2.add(three); 
      row2.add(four); 

      GridLayout operators = new GridLayout(2,2); 
      row3.setLayout(operators); 
      row3.add(plus); 
      row3.add(subtract); 
      row3.add(multiply); 
      row3.add(equals); 
      setVisible(true); 
     } 

     private void setLookAndFeel() 
     { 
      try 
      { 
      IManager.setLookAndFeel("com.sun.java.lang.plaf.nimbus.NimbusLookAndFeel"); 
      } 
      catch(Exception exc) 
      { 
      } 
     } 

     //row 1 
     JPanel row1 = new JPanel(); 
     JTextField text = new JTextField(20); 

     //row 2 
     JPanel row2 = new JPanel(); 
     JButton one = new JButton("1"); 
     JButton two = new JButton("2"); 
     JButton three = new JButton("3"); 
     JButton four = new JButton("4"); 

     //row3 
     JPanel row3 = new JPanel(); 
     JButton plus = new JButton("+"); 
     JButton subtract = new JButton("-"); 
     JButton multiply = new JButton("*"); 
     JButton equals = new JButton("="); 

     public static void main(String[] args) 
     { 
     Layouts l1 = new Layouts(); 
     } 

    } 
+1

我看不到的地方要添加2行和ROW3到你的JFrame。 – dicheridoo

+1

这就是问题@dicheridoo :) – 2012-12-05 19:33:33

+0

如果可能,避免扩展顶级容器。从长远来看,更容易扩展JPanel并在其上创建您的UI。这使得它更加灵活和可重用,因为您可以将面板添加到您喜欢的任何容器中 – MadProgrammer

回答

0

记住要添加的所有成分(即ROW2,ROW3等)

例子:

add(row2,BorderLayout.CENTER) 
add(row3,BorderLayout.SOUTH) 
0
BorderLayout border = new BorderLayout(); 
setLayout(border); 

但您不添加任何东西border!添加numbersoperators

0

您需要的JPanel S和JButton s添加到JFrame。在这种情况下,JFrame是您的Layouts类。所以这样做:

row1.add(text); 
this.add(row1); 

row2.add(one); 
row2.add(two); 
row2.add(three); 
row2.add(four); 
this.add(row2); 

... 

检查本教程是一个非常有用的一个JButton, JPanel & JFrame examples