Java菜鸡的学习日常——JFrame基础操作(1)

Java菜鸡的学习日常——JFrame基础操作(1)

在下第一次接触java是20年寒假前实验室的学长给了我一个做安卓开发的任务,在学过一些java基础后就直接去看了Android Studio的相关教程,但在学习过程中确实遇到了很多基础性的问题,所以就下定决心,痛改前非、重看java了。

这次对于JFrame的心血来潮,大概也是想再建立起对android的认知吧。
所以这里的代码可能不像前几次那样有奇奇怪怪的注释,因为JFrame的操作确实让我觉得异常熟悉。
此外,文件中调用了一些图片,这个URL应用起来就不大一样了,目前我的主力机是一台MAC所以URL的写法***好像***和WINDOW下的不太一样。
至于图片文件,在这里就建议大家前往阿里巴巴的矢量图标库去寻找喽。

好了不啰嗦了,上代码:

package Swing;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

public class MyJFrame_JD extends JFrame {
    public static void main(String[] args) {
//        new MyJFrame_JD().MyFrame();
//        new MyImageIcon();
//        new AbsolutePosition();
//        new MyJFrame_JD().MyFlowLayoutPosition();
//        new MyJFrame_JD().MyJScrollPane();
//        new MyJFrame_JD().MyJButton();
    }

    //JRadioButton与ButtonGroup


    //滚动条面板JScrollPane
    public void MyJScrollPane(){
        JFrame frame = new JFrame();
        JTextArea textArea = new JTextArea();//文本区域组件
        JScrollPane scrollPane = new JScrollPane(textArea);//滚动面板
        Container c = frame.getContentPane();

        c.add(scrollPane);
        frame.setVisible(true);
        frame.setBounds(80,90,800,600);
        frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    }

    //绘制一个JPanel面板
    public void MyJPanel(){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        Container c = frame.getContentPane();

        frame.setTitle("一个花里胡哨的窗口");
        frame.setSize(1000,600);
        frame.setLocation(200,200);
        frame.setVisible(true);
        frame.setResizable(false);//设置窗口大小不可改变

        panel.setSize(1000,600);
        panel.setVisible(true);
        panel.setBackground(new Color(200,189,99));
        c.add(panel);
    }

    //button添加监听事件,开启子窗口
    public void MyFrame(){
        javax.swing.JFrame jFrame = new javax.swing.JFrame();//实例化一个JFrame对象
        jFrame.setVisible(true);//使窗体可视
        jFrame.setSize(1200,500);
        Container container_main = jFrame.getContentPane();//创建一个容器
        container_main.setLayout(null);//取消布局管理器
        JLabel jLabel = new JLabel("这是一个JFrame窗体");
        jLabel.setHorizontalAlignment(SwingConstants.CENTER);
        container_main.add(jLabel);
        JButton jButton = new JButton("弹出对话框");
        JButton jButton_2 = new JButton("一个实验框");
        jButton.setBounds(10,10,200,200);
        jButton_2.setBounds(220,10,200,200);
        //为按钮添加点击事件
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //使MyDialog窗体可见
                new MyJD(MyJFrame_JD.this).setVisible(true);
            }
        });
        //将按钮添加到容器中
        container_main.add(jButton);
        container_main.add(jButton_2);
    }

    //流布局管理器
    public void MyFlowLayoutPosition(){
        JFrame JF = new JFrame();
        JF.setTitle("流布局管理器");
        JF.setSize(300,300);
        Container container = JF.getContentPane();
        JF.setLayout(new FlowLayout(0,10,10));
        for (int i = 0; i < 10; i++) {
            container.add(new JButton("button"+i));
        }
        JF.setVisible(true);
    }

    //JButton
    public void MyJButton(){
        URL url = Swing.class.getResource("anniu.png");
        Icon icon = new ImageIcon(url);
        setLayout(new GridLayout(4,2,5,5));//设置网格布局管理器
        Container contentPane = getContentPane();
        for (int i = 0; i < 6; i++) {
            JButton button = new JButton("button" + i,icon);
            contentPane.add(button);
            if (i%3 == 0){
                button.setEnabled(false);//设置按键不可用
            }
        }
        JButton jB = new JButton();
        jB.setMaximumSize(new Dimension(64,33));//设置按钮与图片相同大小??????不是很懂怎么看图片大小
        jB.setIcon(icon);
        jB.setHideActionText(true);
        jB.setToolTipText("图片按钮");//按钮提示
        jB.setBorderPainted(false);//按钮边界不显示
        jB.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //弹出确认对话框
                JOptionPane.showMessageDialog(null,"弹出对话框");
            }
        });
        contentPane.add(jB);
        setSize(600,600);
        setVisible(true);

    }
}

class MyJD extends JDialog{
    public MyJD(MyJFrame_JD frame){
        //实例化一个JDialog类对象,指定对话框的父窗体、标题、类型
        super(frame,"第一个JDialog窗体",true);
        Container container = getContentPane();
        JLabel label = new JLabel("这是一个对话框");
        container.add(label);
        label.setHorizontalAlignment(SwingConstants.CENTER);
        setBounds(120,120,600,300);//设置对话框窗体大小
    }
}

class DrawICon implements Icon{
    private int width=100,height=100;
    @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;
    }
    public DrawICon(int width,int height){
        this.width = width;
        this.height = height;
    }
    //以下是JLabel标签(绘图,不是插入图片)的应用代码
//        DrawICon drawICon = new DrawICon(30,30);
//        JLabel label = new JLabel("test",drawICon,SwingConstants.CENTER);
//        JFrame frame = new JFrame();
//        Container container_jl = frame.getContentPane();
//        frame.setVisible(true);
//        frame.setSize(500,500);
//        container_jl.add(label);
}

class MyImageIcon extends JFrame{
    public MyImageIcon(){
        JFrame jFrame = new JFrame("这里是标题呀");
        ImageIcon background = new ImageIcon(Swing.class.getResource("BiaoQian.png"));
        background.setImage(background.getImage().
                getScaledInstance(background.getIconWidth(),background.getIconHeight(), Image.SCALE_DEFAULT));
        Container container = jFrame.getContentPane();
        JLabel label = new JLabel("这是一个标签图标",JLabel.CENTER);
        label.setIcon(background);
        //获取图片所在的URL
        Icon icon=new ImageIcon("src/Swing/BiaoQian.png");//实例化Icon对象,同时设置图片位置
        label.setIcon(icon);//为标签设置图片
        label.setHorizontalAlignment(0);
        label.setOpaque(true);
        container.add(label);
        jFrame.setSize(500,500);
        jFrame.setVisible(true);
    }
}

class AbsolutePosition extends JFrame{
    public AbsolutePosition(){
        setTitle("绝对布局");//设置窗体标题
        setLayout(null);
        setBounds(50,50,500,500);
        Container c = getContentPane();//创建容器对象
        JButton jb_1 = new JButton("按钮1");
        JButton jb_2 = new JButton("按钮2");

        jb_1.setBounds(0,0,50,50);
        jb_2.setBounds(100,100,100,50);
        c.add(jb_1);
        c.add(jb_2);
        setVisible(true);
        //设置窗体关闭模式(不设置好像也可以)
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}


大家可以把要用的图片直接放到src的package里面,和代码放到一起(像这样):
在这里插入图片描述

运行结果我就不放出来了,都是一些窗口,大家可以自己去试着做一下。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值