`
开心的棒棒兵
  • 浏览: 3925 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

疑问需解

 
阅读更多
1 设置背景该如何设置呢?
首先我们当然应该创建一个设置背景的方法了,但是此时我们要注意的是,此时的方法是要带参数的,我们或会对JFrame设置背景吧
,那么此时我们就应该public void createBackground(JFrame jf).我也不是很懂为什么,JFrame本身是一个容器类,它是可以
调用setLayeredPane()这个方法的,同时也是可以直接调用setContentPane这个方法的,而我们本身是要调用这两个方法的,类
+方法名调用我们需要的方法这是毋庸置疑的,注意了,此时的类就是我们需要的JFrame类了,而我们本身在我们这个创建背景
的方法中,如果不带这个参数,我们是无法实例化一个JFrame的对象从而用其去调用这个方法的???

JFrame jf1=createbackground();
jf.add(jf1);




public JFrame createbackground(){

JFrame jf=new JFrame();
//创建一个ImageIcon的图标对象
ImageIcon bk = new ImageIcon("image1/111.png");
//实例化一个JLabel的对象,用来显示背景图
JLabel jlaBK = new JLabel(bk);
//设置jlaBk显示位置和大小
jlaBK.setBounds(0, 0, 378, 294);
//设置显示背景图的标签在LayeredPane的最前边。
jf.getLayeredPane().add(jlaBK, new Integer(Integer.MIN_VALUE));
//获取ContentPane面板对象,强制转化成JPanel
JPanel contentPane = (JPanel)jf.getContentPane();
//设置contentPane为透明
contentPane.setOpaque(false);
return jf;
}





JPanel jp3=new JPanel();
jp3.createSouth();


JPanel jp3=createSouth();

这两种调用方法到底有什么不同呢,为什么总是报错啊??所以我觉得此时我需要知道的就是调用方法的格式到底
有哪些呢???又有什么区别呢?

1 对象名.方法名 当调用次方法时,机器会从对象所在的类中去调用此方法,曾经我在这里就犯过一个错误,详见
代码
//rose类
public class Role{
   private String sch;
private String name;
        public int blood;
public Role(){
}
public void pk(Role role,int blood){
   
        role.setBlood(role.getBlood()-blood);
   
            System.out.println(name+"攻击"+role.getName()+","+role.getName()+"掉血"+blood+"点血,"
+role.getName()+"剩余的血量是"+role.getBlood());
    }


//boss类
public class Boss{
private String name;
    public int blood;

    public void pk(Boss boss,int blood){
   

boss.setBlood(boss.getBlood()-blood);


System.out.println(name+"攻击"+boss.getName()+","+boss.getName()+
"掉血"+blood+"点血,"+boss.getName()+"剩余的血量是"+boss.getBlood());
}




//主函数
      role1.pk(boss,20);

      显然这是行不通的,因为在我的Role类中压根找不到这种PK方法的,此处的boss不仅仅是英文的
boss,他所代表的还有BOSS类(类是可以当做数据类型来使用的!!!)所以我把两种PK方法写反了,这是我以后非常需要注意
     
的地方,当然这也是源于我对于调用方法的不理解来着。通过这里我们可以再来看这么一段程序了
     
      JPanel contentPane = (JPanel)jf.getContentPane();
//设置contentPane为透明
contentPane.setOpaque(false);
这里我们把JFrame类的ContentPane强制转化成了JPanel,所以我尝试了下,发现只有
JPanel才可以调用设置透明的方法,JFrame是不可以调用的,所以,也就是JFrame里没有定义这种方法了,我们怎么可以

调用呢。那么让我们回归到上述的问题
   
     JPanel jp3=new JPanel();
     jp3.createSouth();显然是行不通的,因为我们并没有在JPanel中定义createSouth()的方法,
而JPanel jp3=createSouth();并不是调用了  JPanel中的方法,而是通过createSouth()的方法创建了一个JPanel对象
   
     
     
     
     
     
     
      记得在讲构造方法是老师曾经讲过,
      JPanel jp1=new JPanel();
      JPanel jp2=new JPanel();
      这两种分别实例化了JPanel,那么jp1是否与jp2相同呢?答案是不同,jp1和jp2中存储的是什么呢,
对象名存储对象在内存中的首地址,每当我们实例化一个对象,就会给对象重新分配一个地址。再如:
String str = "abc";

String str2 = new String("abc");

str!=str2
                因为str中存储的是"abc",而str2中的首地址。唯有str.equals(str2)是true.
     
2


构造方法与普通方法应该是有着很大的区别的,这也是我们所要知道和掌握的,除了我们知道的①构造方法的名字
与类名相同②构造方法没有返回值 这两点之外,我觉得最为关键的当数他们在运用上的不同了③构造方法在使用时要进行实例化,
即我们需要new关键字!!!


实例程序
public Role(String sch,String name,int blood){
  this.sch=sch;
  this.name=name;
  this.blood=blood;
  }
      Role role1=new Role("唐门弟子","xx",40);//new关键字至关重要啊!!!
     
     
     
     
3
        接下来就想说说布局了,布局对于一个美丽的界面是至关重要的。而对于我们而言,是要掌握局中局!!!我们知道,
除了三大布局方法之外(流式布局,网格布局,边框布局),还有各个布局中的小布局(LEFT RIGHT CENTER TRAILING LEADING),
除此之外,还可以设置组件之间的距离,这都是我们需要掌握的例如:(JPanel默认布局边框,JPanel默认流式)
JPanel jp1=new JPanel();
jp1.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));就是把面板中的组件设置在面板的中央,
而且,间距横竖为10;我们要学会使用嵌套面板,因为有的时候我们布局不能有一个就能达到自己的要求,这就需要多个进行综合了。
分享到:
评论
1 楼 ayaome 2014-03-29  

相关推荐

Global site tag (gtag.js) - Google Analytics