窗体创建代码 java:
public class Demo_JFrame {
public static void main(String[] args) {
JFrame jFrame = new JFrame("窗体主题");
jFrame.setVisible(true);//窗体可见
/**
* DO_NOTHING_ON_CLOSE = 0 : 无任何操作
* HIDE_ON_CLOSE = 1 :隐藏窗口,不关闭程序
* DISPOSE_ON_CLOSE = 2:关闭并释放窗体资源
* EXIT_ON_CLOSE = 3:隐藏窗体,并停止程序
*/
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// jFrame.setSize(300, 200);//设置窗体大小,单位 像素
// jFrame.setLocation(200, 300);//设置坐标,单位 像素
jFrame.setBounds(200, 200, 300, 300);//设置坐标和窗体大小,单位 像素
Container contentPane = jFrame.getContentPane();//获取窗体容器
contentPane.setBackground(Color.WHITE);
JLabel jLabel = new JLabel("这是一个窗体");
contentPane.add(jLabel);//添加组件
// contentPane.remove(jLabel);//删除组件
contentPane.validate();//验证容器中的组件
jFrame.setContentPane(contentPane);
jFrame.setResizable(false);//设置窗口大小是否可变
System.out.println("x=" + jFrame.getX() + "; y=" + jFrame.getY() + "; width=" + jFrame.getWidth()
+ "; height=" + jFrame.getHeight());
}
}
项目中代码Java:
public class Demo_JFrame extends JFrame{
public Demo_JFrame(){
// JFrame jFrame = new JFrame("窗体主题");
setTitle("窗体标题");//设置窗体标题
setVisible(true);//窗体可见
/**
* DO_NOTHING_ON_CLOSE = 0 : 无任何操作
* HIDE_ON_CLOSE = 1 :隐藏窗口,不关闭程序
* DISPOSE_ON_CLOSE = 2:关闭并释放窗体资源
* EXIT_ON_CLOSE = 3:隐藏窗体,并停止程序
*/
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// jFrame.setSize(300, 200);//设置窗体大小,单位 像素
// jFrame.setLocation(200, 300);//设置坐标,单位 像素
setBounds(200, 200, 300, 300);//设置坐标和窗体大小,单位 像素
Container contentPane = getContentPane();//获取窗体容器
contentPane.setBackground(Color.WHITE);
JLabel jLabel = new JLabel("这是一个窗体");
contentPane.add(jLabel);//添加组件
// contentPane.remove(jLabel);//删除组件
contentPane.validate();//验证容器中的组件
setContentPane(contentPane);
setResizable(false);//设置窗口大小是否可变
System.out.println("x=" + getX() + "; y=" + getY() + "; width=" + getWidth()
+ "; height=" + getHeight());
}
public static void main(String[] args) {
new Demo_JFrame();
}
}
public class Demo_JDialog extends JDialog {
public Demo_JDialog(JFrame frame){
/**
* 第一个参数,父窗体
* 第二个参数,对话框标题
* 第三个参数,是否阻塞父窗体
*/
super(frame, "对话框标题", true);//设置对话框阻塞
Container container = getContentPane();//获取窗口容器
container.add(new JLabel("这是一个对话框"));
setBounds(100, 150, 200, 150);//设置坐标和窗体大小
}
public static void main(String[] args) {
JFrame f = new JFrame("父窗体");
f.setBounds(50, 50, 300, 300);
Container contentPane = f.getContentPane();
JButton button = new JButton("弹出对话框");
contentPane.setLayout(new FlowLayout());//设置布局,使用流布局
contentPane.add(button);
f.setVisible(true);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
//按钮添加监听事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Demo_JDialog dialog = new Demo_JDialog(f);
dialog.setVisible(true);//设置窗体可见
}
});
}
}
public class Demo_JLabel extends JFrame {
public Demo_JLabel(){
setBounds(100, 100, 200, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = getContentPane();
setVisible(true);
JLabel label = new JLabel("这是一个标签内容");
// label.setText("更改标签内容");
// System.out.println(label.getText());//获取标签内容
label.setFont(new Font("楷体", Font.BOLD, 15));
label.setForeground(Color.RED);//更改字体颜色
contentPane.add(label);
}
public static void main(String[] args) {
new Demo_JLabel();
}
}
Java Swing 中图标只能用标签设置,没有专用的图标类。
public class Demo_Icon extends JFrame {
public Demo_Icon(){
setBounds(100, 100, 500, 350);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
JLabel label = new JLabel("这是一个展示图标的标签");
// URL url = Demo_Icon.class.getResource("java.png");//获取图片URL路径
// System.out.println(url);//D:\ProgramFiles\IdeaProjects\hello_Swing\src\com\icon\java.png
// Icon icon = new ImageIcon("D:\\ProgramFiles\\IdeaProjects\\hello_Swing\\src\\com\\icon\\java.png");
Icon icon = new ImageIcon("com/icon/java.png");//第二种方法,获取相应路径下的图片
label.setIcon(icon);//添加图片
label.setSize(20, 20);//设定标签大小,不会改变图片大小
contentPane.add(label);
setVisible(true);
}
public static void main(String[] args) {
new Demo_Icon();
}
}
也叫做 null布局
使用绝对布局的窗口通常都是固定大小的,窗口内的组件的位置和形状不会随着窗体的改变而发生变化。
Container contentPane = getContentPane();//获取窗体容器
contentPane.setLayout(null); // 设置绝对布局
从左到右排序,默认居中对齐
像流水一样,像某个方向流动,遇到障碍就折回。
所有的组件会随着窗口大小而调整位置。
Container contentPane = getContentPane();//获取窗体容器
contentPane.setLayout(new FlowLayout()); //设置流布局,默认居中对齐
for(int i = 0; i<10; i++){
JButton b1 = new JButton("按钮"+ i+i+i+i);
contentPane.add(b1);
}
//contentPane.setLayout(new FlowLayout(FlowLayout.LEFT)); //设置流布局,左对齐
//contentPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); //设置流布局,右对齐
//contentPane.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));//居中对齐,设置组件间距20
一个容器默认有 东、西、南、北、中 五个布局:
改变窗体大小,组件跟着改变。
在同一个区域添加组件,会覆盖原来的组件。
组件大小会随着窗口大小改变。
如果组件数量大于网格数量,会自动重新布局网格,增大网格布局。