将一个类调用到网格中

时间:2014-01-15 02:46:38

标签: java class applet awt layout-manager

我正在尝试为学校制作一个Weather小程序,但是我在将一个类调用到主类时遇到了问题。最后我想要3个永久性组件(位置,温度,降水)然后在图像框中我想做一个if语句从组件中的数据中拍摄适当的图像。

布局理念

主类代码

// The "Weather" class.
import java.applet.*;
import javax.swing.*;
import java.awt.*;

public class Weather extends Applet
{
//TempBar Intergers
    //int x= 
    //int y=
    //int H=    //H = Heat

    //PercipBar Intergers
    //int x2=
    //int y2=
    //int P =   //P = pericipitation

    public void init ()
    {
       GridLayout umm = new GridLayout(0,2);
       PercipBar percip = new PercipBar();
       getContentPane.addItem (percip());
    } 

    public void paint (Graphics g)
    {
    } 
} 

PercipBar代码

import java.awt.*;
import java.applet.*;

public class PercipBar extends Applet 
{
     int x2 =2;
     int y2 =2;

     int P =80;//P = percipitation will be declared in main file

    public void paint (Graphics g)
    {
        g.setColor (Color.black);
        g.drawRect (x2, y2, 100, 20);//outline of bar
        g.setColor (Color.blue);
        g.fillRect (x2+1, y2+4, P, 14 ); //indicator bar (+4 puts space beetween outline bar)
    }
}

1 个答案:

答案 0 :(得分:0)

该GUI似乎非常适合包含在BorderLayout中。

  • location gui将被置于BorderLayout.PAGE_START
  • 的位置
  • image将放入BorderLayout.CENTER
  • temp将放入BorderLayout.LINE_END
  • percip(拼写为precip)将被置于BorderLayout.PAGE_END
  • 的位置

请注意,降水条应该是另一个小程序!它应该是Component

为了在BorderLayout中分配空间,自定义绘制的组件需要返回合理的首选大小。

最好不要自定义绘制这样的东西,而只需使用Label来显示文本。这样,我们就不需要覆盖paint方法或getPreferredSize。 GUI将从标签的自然大小中获取提示。