1 设置背景该如何设置呢?
首先我们当然应该创建一个设置背景的方法了,但是此时我们要注意的是,此时的方法是要带参数的,我们或会对JFrame设置背景吧
,那么此时我们就应该public void createBackground(JFrame jf).我也不是很懂为什么,JFrame本身是一个容器类,它是可以
调用setLayeredPane()这个方法的,同时也是可以直接调用setContentPane这个方法的,而我们本身是要调用这两个方法的,类
+方法名调用我们需要的方法这是毋庸置疑的,注意了,此时的类就是我们需要的JFrame类了,而我们本身在我们这个创建背景
的方法中,如果不带这个参数,我们是无法实例化一个JFrame的对象从而用其去调用这个方法的??? :o
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;我们要学会使用嵌套面板,因为有的时候我们布局不能有一个就能达到自己的要求,这就需要多个进行综合了。
首先我们当然应该创建一个设置背景的方法了,但是此时我们要注意的是,此时的方法是要带参数的,我们或会对JFrame设置背景吧
,那么此时我们就应该public void createBackground(JFrame jf).我也不是很懂为什么,JFrame本身是一个容器类,它是可以
调用setLayeredPane()这个方法的,同时也是可以直接调用setContentPane这个方法的,而我们本身是要调用这两个方法的,类
+方法名调用我们需要的方法这是毋庸置疑的,注意了,此时的类就是我们需要的JFrame类了,而我们本身在我们这个创建背景
的方法中,如果不带这个参数,我们是无法实例化一个JFrame的对象从而用其去调用这个方法的??? :o
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;我们要学会使用嵌套面板,因为有的时候我们布局不能有一个就能达到自己的要求,这就需要多个进行综合了。