鱼C论坛

 找回密码
 立即注册
查看: 3109|回复: 0

[系列教程] JLabel(二)图片的放大缩小

[复制链接]
发表于 2017-9-4 10:17:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是JLabel控件的另一种写法,可以让图片作为背景,另外文本可以用简单的html语法,代码如下:
import javax.swing.*;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.applet.Applet;
import java.net.URL;
class HelloWorld extends JFrame{
        private JPanel jp;
        private JLabel jl;
        private Image img;
        public static void main(String args[]){
                
                HelloWorld jf = new HelloWorld();
                
                jf.setVisible(true);
        }
        HelloWorld(){
                
                setBounds(100,100,450,300);
                
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                
                jp = new JPanel();
                
                // Font helv14b = new Font("Helvetica", Font.BOLD, 14);

                img = new ImageIcon("./logo.png").getImage();

                jl = new JLabel("<html>Let coding change the world<br>FishC.com</html>"){
                        public void paintComponent(Graphics g){
                                super.paintComponent(g);
                                g.drawImage(img,0,0,this.getWidth(),this.getHeight(),null);
                        }
                };
                
                // jl.setIcon(new ImageIcon("./logo.png"));
                
                // jl.setFont(helv14b);
                                
                jp.add(jl);
                
                setContentPane(jp);
        }
}
效果图:
aaaaaaaaaaaa.png
我们还可以自己控制图片大小,这次再从新写个MyJLabel.java文件,代码如下:
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
class MyJLabel extends JFrame{
        private JPanel jp;
        private JLabel jl;
        private ImageIcon ii;
        private Image img;
        public static void main(String args[]){
                
                MyJLabel jf = new MyJLabel();
                
                jf.setVisible(true);
        }
        MyJLabel(){
                
                setBounds(100,100,450,300);
                
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                
                jp = new JPanel();

                jl = new JLabel("<html><br>FishC.com<br>Let coding change the world</html>"){
                        public void paint(Graphics g){
                                ii = new ImageIcon("./logo.png");
                                img = ii.getImage();
                                Image smallImage = img.getScaledInstance(200,100,Image.SCALE_DEFAULT);
                                ImageIcon myimg = new ImageIcon(smallImage);
                                 this.setIcon(myimg);
                                 this.setSize(500, 200);        
                                super.paint(g);
                         }
                };
                                                
                jp.add(jl);
                
                setContentPane(jp);
        }
}

效果图:
bbbbbbbbbbbbbbbbbb.png
以上两种都采用了从写JLabel类里的方法形式,比如我们的类继承了另外一个类就可以通过从写方法的形式覆盖上一个类的方法,也可以直接在new的类后面大括号里重写,达到我们自己的目的比如以下的例子:
class Decorating{

        void a(){
                System.out.println("this is a function");
        }

        public static void main(String args[]){
                Decorating dec = new Decorating(){
                        void a(){
                                System.out.println("this is covered a function");
                        }
                };
                dec.a();
        }
}
输出结果为:
cccccccccccccc.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 00:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表