JFrame窗体:自带标题栏最小化/最大化和关闭选项(JFrame Frame Window)
JPanel(面板):(区域 容器) 面板也一样可以加载其他组件,绘制
布局的区别:
JFrame默认是边框布局:BorderLayout,JPanel默认是流式布局FlowLyaout
FlowLyout:从上到下,从左到右,依次摆放,整体居中(代码1)
BorderLyout:五个方位每个方位只能加载一个组件对象(代码2)
1.在默认的情况下直接加载在中央方位
2.东西南北中:(1)南北不能设置宽度(2)东西不能设置高度(其中高度是窗体的高度 减去南北高度的高度)(3)剩下的就是中间的了(4):south,north,east,west,center
Dimension dim1=new Dimension(0,100);
Dimension dim2=new Dimension(100,0);
njp.setPreferredSize(dim1);//南北只能设置高度,不能设置宽度
sjp.setPreferredSize(dim1);
ejp.setPreferredSize(dim2);//东西只能设置宽度,不能设置高度
wjp.setPreferredSize(dim2);
BorderLayout特点2
代码(1)
import javax.swing.*;
import java.applet.Applet;
import java.awt.*;
public class LayoutUI extends Applet{
public static void main(String[] args) {//主函数是一个程序的入口,没有是不行的!
LayoutUI ly=new LayoutUI();
ly.showUI();
}
public void showUI(){
JFrame jf=new JFrame();
jf.setTitle("JPanel默认流式布局FlowLyout演示");
jf.setDefaultCloseOperation(3);
jf.setSize(600,600);
jf.setLocationRelativeTo(null);//居中
JPanel njp=new JPanel();//南
JPanel sjp=new JPanel();//北
JPanel ejp=new JPanel();//东
JPanel wjp=new JPanel();//西
JPanel cjp=new JPanel();//中
//窗体添加JPanel
jf.add(njp,BorderLayout.NORTH);
jf.add(sjp,BorderLayout.SOUTH);
jf.add(ejp,BorderLayout.EAST);
jf.add(wjp,BorderLayout.WEST);
jf.add(cjp,BorderLayout.CENTER);
//添加按钮
njp.add(new Button("NORTH"));
sjp.add(new Button("SOUTH"));
ejp.add(new Button("EAST"));
wjp.add(new Button("WEST"));
cjp.add(new Button("CENTER"));
//添加尺寸以及背景颜色
Dimension dim1=new Dimension(0,100);
Dimension dim2=new Dimension(100,0);
njp.setPreferredSize(dim1);//南北只能设置高度,不能设置宽度
sjp.setPreferredSize(dim1);
ejp.setPreferredSize(dim2);//东西只能设置宽度,不能设置高度
wjp.setPreferredSize(dim2);
njp.setBackground(Color.ORANGE);
sjp.setBackground(Color.green);
ejp.setBackground(Color.pink);
wjp.setBackground(Color.CYAN);
cjp.setBackground(Color.lightGray);
jf.setVisible(true);
}
}
出现的问题原因:
JPanel new 新的对象的时候,不能像上面的数组一样使用,以为创建新的对象的时候:需要的是对象名,二不是字符串,所以不行:如下更好理解(错误的代码);
String str="MXS";
int i=str;
代码(2)
import javax.swing.*;
import java.awt.*;
public class Text {
public static void main(String[] args) {
Text tt=new Text();
tt.showUI();
}
public void showUI() {
JFrame jf=new JFrame();
jf.setTitle("JFrame默认边框布局BorderLayout特点演示");
jf.setDefaultCloseOperation(3);
jf.setSize(400,400);
init(jf);//按钮的封装
jf.setVisible(true);
}
public void init (JFrame jf) {
setLayout(new BorderLayout());
jf.add(new Button("NORTH"), BorderLayout.NORTH);
jf.add(new Button("SOUTH"), BorderLayout.SOUTH);
jf.add(new Button("EAST"), BorderLayout.EAST);
jf.add(new Button("WEST"), BorderLayout.WEST);
jf.add(new Button("CENTER"), BorderLayout.CENTER);
}
//public是公开资源,Private是私有的在声明属性和方法尽可能私有
public void setLayout(BorderLayout borderLayout) {
}//这个方法在上面调用了所以一定要创建
}
利用类JPanel(画板)实现五子棋面板的基本布局效果图如下图所示:
1.在窗体中有new两个新的JPanel对象(1)drawPanel(2)btnPanel
2.在btnPannel上添加sjp,njp两个新的JPanel,背景颜色,尺寸等属性
3.在sjp(北面板)上添加背景颜色,按钮等属性(addButoon)尝试封装起来运用;
4.在drawPanel上实现网格重绘(画笔的获取,for循环的运用等)
代码在下一篇;