1. 上期遗留问题:
1.1 使用 标签 嵌入 ImageIcon 图片 不显示问题
昨天玩的往 JLabel 里面嵌入图片图片没有显示出来,但是也没有报空指针异常,真是奇了个大怪,今天下班回来又好好的扣吃了一会,发现写的逻辑并没有问题。开始还在猜测是不是因为 标签的属性也要设置一下,比如可见性之类的,但是设置了发现没还用,后来又往容器里面嵌,怎么搞也是不出来,emm… 于是在博客上发了个提问。… 这个遗留问题我一定会解决,而且我的路径 没问题啊,debug 跑的时候,路径能读到的。
2. 练习布局方式的间距设置
我们先来看一下效果图:(因为代码没有难度,只不过是之前用的方法,其中有个两个参数没有设置,今天学习到这里我们可以接触的了的水平了,就设置上了)
我设置的效果是长这个样子的,不管怎么设置,我们可以看到每个面板之间是有一个白色的间距间隙的。很好实现,这个调用方法,给两个参数,然后正常写代码就好了,下面把代码帖出来
package com.Swing.JFrame;
import javax.swing.*;
import java.awt.*;
public class Test04ButtonSpace_between extends JFrame {
public static void main(String[] args) {
new Test04ButtonSpace_between("间距设置的效果测试");
}
public Test04ButtonSpace_between(String title){
super.setTitle(title);
//先获取容器,然后我们把面板添加到容器里,再从面板中嵌入按钮 进行间距设置的测试
//不继承 JFrame 是调不到获取容器的方法的
Container contentPane = this.getContentPane();
//设置布局,布局方式为:表格布局
contentPane.setLayout(new GridLayout(2,1,10,10));
//rows:两行 cols:一列 hgap:横间隙 vgap:纵间距
//开始设置面板
Panel p1 = new Panel(new GridLayout(1,3));
//一行三列,可以添加三个按钮
p1.add(new JButton("1"));
p1.add(new JButton("2"));
p1.add(new JButton("3"));
Panel p2 = new Panel(new GridLayout(1, 2));
//一行两列,可以添加两个按钮
p2.add(new JButton("4"));
p2.add(new JButton("5"));
Panel p3 = new Panel(new GridLayout(2, 1));
//两行一列,可以添加两个按钮
p3.add(new JButton("6"));
p3.add(new JButton("7"));
Panel p4 = new Panel(new GridLayout(3, 2));
//三行两列,可以添加 3*2 =6个按钮
p4.add(new JButton("8"));
p4.add(new JButton("8"));
p4.add(new JButton("8"));
p4.add(new JButton("8"));
p4.add(new JButton("8"));
p4.add(new JButton("8"));
//设置好了,添加到容器当中
contentPane.add(p1);
contentPane.add(p2);
contentPane.add(p3);
contentPane.add(p4);
//设置可见,弹出位置及大小,关闭按钮
this.setVisible(true);
this.setBounds(220,220,600,440);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
3. JScrollPanel 滚动条
学习完了间距间隙设置,来玩滚动条。
我们先来看一下效果图,首先说明,在容器中放入面板,面板中嵌入可换行的文本域。这些全部设置好之后,当窗口容器缩放到一定尺寸,会有滚动条效果
然后在来看一下代码,碎角片细节内容,一如既往,注释在代码当中了
package com.Swing.JFrame;
import javax.swing.*;
import java.awt.*;
public class Test05JScrollPanel extends JFrame {
public static void main(String[] args) {
new Test05JScrollPanel();
}
public Test05JScrollPanel(){
Container contentPane = this.getContentPane();
//创建可换行的文本域对象
TextArea textArea = new TextArea(20,50);
textArea.setText("我是一只爱学习的兔C");
//创建带有滚动条的面板对象
JScrollPane jScrollPane = new JScrollPane(textArea);
contentPane.add(jScrollPane);
this.setVisible(true);
this.setBounds(220,220,600,420);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
注意一下,使用文本域对象要设置尺寸的,不要直接在调用的构造中传入文本内容,我一上来就是那么写的, 结果运行之后什么也没有。
其次就是 面板对象,构造参数中可以直接传入文本域对象。