—————为什么JFrame不能之间添加组件 需要调用getContentPane()方法?
————getContentPane()作用:初始化一个容器,用来在容器上添加一些控件
- JFrame代码与 Frame 的代码十分相似 唯一的区别在于,你不能将组件加入到JFrame中。
- 你可以将组件加入到JFrame 的contentpane 中
contentpane :包含除菜单条外所有框架的可视组件的容器
要获得一个JFrame 的contentpane,可使用getContentPane()方法
eg: Container container = getContentPane();
container.add(jLabel); ———————— 标签放在容器里
container.setBackground(Color.blue);——————设置背景颜色
JFrame.EXIT_ON_CLOSE常量作为参数传入即可
WindowConstants——用于控制窗口关闭操作的常量
eg:jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JFrame设置背景为何不显示?
————窗口背景颜色是指直接调用JFrame的setBackgroud( )方法设置的颜色
但显示的却是JFrame.getContentPane( )的颜色——默认为白色
————解决方法
- ——得到一个ContetPane容器的实例container 给实例上色
Container container = getContentPane(); container.setBackground(Color.yellow);
- ——无标签的情况下设置背景颜色
getContentPane().setVisible(false);
public class JFrameDemo2 {
public static void main(String[] args) {
new MyJFrameDemo().init();
}
}
class MyJFrameDemo extends JFrame {
public void init(){
setTitle("ZY的小标签");
setBounds(200,200,400,400);
setVisible(true);
JLabel jLabel = new JLabel("一是婴儿哭啼 " +
"二是学游戏 " +
"三是青春物语" +
" 四是刚好遇见你");
add(jLabel);
//setBackground(Color.blue);
// 标签置中
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
// 获得一个容器实例 上色
Container container = getContentPane();
container.setBackground(Color.yellow);
// getContentPane().setVisible(false);
}
}
定义:创建对话框窗口的主要类
JDialog对话框可分为两种:模态对话框和非模态对话框
需求:弹窗里点击按钮后弹出一个小弹窗
public class DialogDemo extends JFrame {
public static void main(String[] args) {
new DialogDemo();
}
// 主窗口
public DialogDemo(){
setVisible(true);
setSize(500,400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 关闭窗口
Container container = getContentPane(); // JFrame放东西的容器
container.setLayout(null); // 绝对布局
JButton jbutton = new JButton("点击弹出一个小窗口");
jbutton.setBounds(100,100,300,100);
jbutton.addActionListener(new ActionListener() { // button上装一个监听器
@Override
public void actionPerformed(ActionEvent e) {
new MyDialogDemo();
}
});
container.add(jbutton);
}
}
class MyDialogDemo extends JDialog{ // 弹窗弹出的小窗口
public MyDialogDemo(){
setVisible(true);
setTitle("弹窗2");
setBounds(100,100,300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 关闭窗口
Container container = getContentPane();
container.setLayout(null);
Label Label = new Label("这是一个新的弹窗");
container.add(Label);
}
}
Icon:图标 通常用于装饰组件 图标是一个接口 需要一个实现类
需求:设置一个图标标签
public class IconDemo extends JFrame implements Icon {
private int width;
private int height;
public static void main(String[] args) {
new IconDemo().init();
}
public IconDemo(){}
public IconDemo(int width,int height){
this.width = width;
this.height = height;
}
public void init(){ // 初始化函数
IconDemo iconDemo = new IconDemo(15, 15); // 设置图标大小
JLabel jLabel = new JLabel("圆圈", iconDemo, SwingConstants.CENTER); ——————这个标签就是一个名为圆圈的图标
Container container = getContentPane();
container.add(jLabel); ———————— 标签放在容器里
container.setBackground(Color.blue);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x,y,width,height);// 画圆
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
}
ImageIcon:一个 Icon 接口的实现类 可以存放图片 返回URL
URL:某一资源的地址
需求:设置一个带图片的图标标签
public class IconDemo2 extends JFrame {
public IconDemo2() {
setTitle("ZY的小图片");
JLabel jLabel = new JLabel("蜡笔小小新");
URL url = IconDemo2.class.getResource("timg (6).jpg"); ————————获取图片的地址
ImageIcon imageIcon = new ImageIcon(url); ——————传入图标的地址 创建一个实现图标类的对象
jLabel.setIcon(imageIcon); // 在标签上加上这个图标
jLabel.setHorizontalAlignment(SwingConstants.CENTER); // 设置标签在容器中的位置
Container container = getContentPane();
container.add(jLabel);
setBounds(200,200,500,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 关闭窗口
}
public static void main(String[] args) {
new IconDemo2();
}
}
需求:在面板上添加网格布局的按钮
public class JPanelDemo extends JFrame {
public JPanelDemo(){
// Container container = getContentPane();
// container.setLayout(new GridLayout(2,1,10,10)); // 把面板分成两行
setLayout(new GridLayout(2,1,10,10));
JPanel jPanel1 = new JPanel(new GridLayout(1, 2)); //一行两列
JPanel jPanel2 = new JPanel(new GridLayout(2, 1)); // 两行一列
JPanel jPanel3 = new JPanel(new GridLayout(2, 2)); // 两行两列
jPanel1.add(new JButton("1-1"));
jPanel1.add(new JButton("1-2"));
jPanel2.add(new JButton("2-1"));
jPanel2.add(new JButton("2-1"));
jPanel3.add(new JButton("3-1"));
jPanel3.add(new JButton("3-1"));
jPanel3.add(new JButton("3-1"));
jPanel3.add(new JButton("3-1"));
Container container = getContentPane();
container.setBackground(Color.black);
container.add(jPanel1);
container.add(jPanel2);
container.add(jPanel3);
setVisible(true);
setBounds(200,200,500,500);
}
public static void main(String[] args) {
new JPanelDemo();
}
}
在窗体中创建一个带滚动条的文字编辑器
- 首先需要初始化编辑器 设定编译器的大小
- 当创建带滚动条面板时,将编译器加入面板中
- 将带滚动条的编译器放置在容器中即可
需求:设置一个带滚动条的文本面板 添加一个组件文本域
public class JScrollPanelDemo extends JFrame {
public JScrollPanelDemo(){
// 设置文本域
JTextArea jTextArea = new JTextArea(20, 50);
jTextArea.setText("欢迎来到ZY的JAVA小天地!");
// 设置滚动条面板
JScrollPane jScrollPane = new JScrollPane(jTextArea);// 将文本域添加到滚动条面板上
Container container = getContentPane();
container.add(jScrollPane);
setVisible(true);
setBounds(200,200,100,100);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollPanelDemo();
}
}
需求:创建一个带有图标的按钮
public class JButtonDemo extends JFrame{
public JButtonDemo(){
setTitle("ZY的图片按钮");
URL url = JButtonDemo.class.getResource("timg (6).jpg"); // 路径
System.out.println(url);
Icon icon = new ImageIcon(url); // 将图片变成一个图标
JButton jButton = new JButton();
jButton.setIcon(icon); // 把图片加在按钮上
Container container = getContentPane();
container.add(jButton);
setVisible(true);
setBounds(100,100,300,300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo();
}
}
需求:创建一个单选框按钮
public class JButtonDemo2 extends JFrame {
public JButtonDemo2(){
setTitle("ZY的单选框");
URL url = JButtonDemo2.class.getResource("timg (5).jpg");
ImageIcon imageIcon = new ImageIcon(url);
// 创建单选框
JRadioButton jRadioButton1 = new JRadioButton("选项A");
JRadioButton jRadioButton2 = new JRadioButton("选项B");
JRadioButton jRadioButton3 = new JRadioButton("选项C");
// 单选框只能选择一个
ButtonGroup buttonGroup = new ButtonGroup(); //分组——一个组中只能选择一个
buttonGroup.add(jRadioButton1);
buttonGroup.add(jRadioButton2);
buttonGroup.add(jRadioButton3);
Container container = getContentPane();
container.add(jRadioButton1,BorderLayout.CENTER);
container.add(jRadioButton2,BorderLayout.NORTH);
container.add(jRadioButton3,BorderLayout.SOUTH);
setVisible(true);
setBounds(200,200,300,300);
container.setBackground(Color.GREEN);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo2();
}
}
需求:创建一个复选框按钮 选择你的学历
public class JButtonDemo3 extends JFrame {
public JButtonDemo3(){
setTitle("ZY的复选框");
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
// 设置标签
JLabel jLabel = new JLabel("请选择你的学历");
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
// 设置复选框按钮
JCheckBox jCheckBox1 = new JCheckBox("本科");
JCheckBox jCheckBox2 = new JCheckBox("博士");
JCheckBox jCheckBox3 = new JCheckBox("硕士");
jPanel1.add(jLabel);
jPanel2.add(jCheckBox1, BorderLayout.NORTH);
jPanel2.add(jCheckBox2,BorderLayout.CENTER);
jPanel2.add(jCheckBox3,BorderLayout.SOUTH);
Container container = getContentPane();
container.setLayout(new GridLayout(2,1));————————设置两块面板的布局
container.add(jPanel1);
container.add(jPanel2);
setVisible(true);
setBounds(500,500,400,130);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo3();
}
}
创建一个列表
public class ComboboxDemo2 extends JFrame {
public ComboboxDemo2(){
setTitle("ZY的列表");
Vector vector = new Vector(); // 集合
vector.add("清华大学");
vector.add("北京大学");
vector.add("麻省理工大学");
JList jList = new JList(vector);// 创建一个列表 传入集合
Container container = getContentPane();
container.add(jList);
setVisible(true);
setBounds(200,200,300,300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ComboboxDemo2();
}
}
需求:创建一个下拉框 选择你想看的电视剧
public class ComboboxDemo extends JFrame{
public ComboboxDemo(){
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JLabel jLabel = new JLabel("请选择你想看的电视剧");
JComboBox jComboBox = new JComboBox(); -------创建一个下拉框
jComboBox.addItem(null);
jComboBox.addItem("庆余年");
jComboBox.addItem("沙海");
jComboBox.addItem("德鲁纳酒店");
jPanel1.add(jLabel);
jPanel2.add(jComboBox);
Container container = getContentPane();
container.setLayout(new GridLayout(2,1));
container.add(jPanel1);
container.add(jPanel2);
setVisible(true);
setBounds(500,500,200,150);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ComboboxDemo();
}
}
需求:创建一个文本框
public class TextDemo extends JFrame {
public TextDemo(){
TextField textField1 = new TextField("Hello");
TextField textField2 = new TextField("HelloWorld",20);—————————— 20代表可输入的字符长度
Container container = getContentPane();
container.add(textField1,BorderLayout.NORTH);
container.add(textField2,BorderLayout.SOUTH);
setVisible(true);
setBounds(200,200,300,300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TextDemo();
}
}
需求:创建一个密码框 用*代替输入的文本
public class TextDemo2 extends JFrame {
public TextDemo2(){
JPasswordField jPasswordField = new JPasswordField();// 创建一个密码框
jPasswordField.setEchoChar('*'); //输入的文本用*代替
Container container = getContentPane();
container.add(jPasswordField);
setVisible(true);
setBounds(200,200,300,300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TextDemo2();
}
}
需求:创建一个文本域
public class JScrollDemo extends JFrame {
public JScrollDemo(){
JTextArea jTextArea = new JTextArea(20, 50);
jTextArea.setText("欢迎来到ZY的小天地");
JScrollPane jScrollPane = new JScrollPane(jTextArea);
Container container = getContentPane();
container.add(jScrollPane);
setVisible(true);
setBounds(200,200,500,500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollDemo();
}
}