当前位置: 代码迷 >> J2SE >> java图形界面里面如何实现图片缩放
  详细解决方案

java图形界面里面如何实现图片缩放

热度:44   发布时间:2016-04-24 02:02:40.0
java图形界面里面怎么实现图片缩放
java图形界面里面怎么实现图片缩放,比如我有一个frame里面放了一个label,label上面有张图片,当frame大小改变时让图片一起变,图片原来是将label填满的,

------解决方案--------------------
稍后贴代码
------解决方案--------------------
Image image = new ImageIcon("images/set2.jpg").getImage();
image = image.getScaledInstance(300, 180, 0);

JLabel label = new JLabel();
label.setBounds(70, 75, 300, 200);
label.setIcon(new ImageIcon(image));

------解决方案--------------------
Java code
package musicPlatform.client.login;import java.awt.*;import javax.swing.*;import musicPlatform.client.config.SaveMusicFileDirectory;import testSwing2.UsedToChangeMyFrame;public class SubstituteLoginFrame extends JFrame {    private static final long serialVersionUID = 2022587044957057382L;    private JButton jButton1;// 登录    private JButton jButton2;// 注册    private JLabel jLabel2;// 密码    private JPasswordField jTextField2;// 密码    private JTextField jTextField1;// 用户名    private JLabel jLabel1;// 用户名    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() {            public void run() {                new SubstituteLoginFrame();            }        });    }    private static void clientConfig() {        String defaultPath = System.getProperty("user.home") + "\\" + "music";        SaveMusicFileDirectory save = new SaveMusicFileDirectory();        save.creatXML(defaultPath);    }    public SubstituteLoginFrame() {        super();        autoTest();// 检查服务器        init();    }    /**     * 首次开启客户端时检查连接状态     */    private void autoTest() {        RespondLoginEnter res = new RespondLoginEnter();        res.initialTestLinkage();    }    public void illegalCallingEntrance() {        SubstituteLoginFrame lf = new SubstituteLoginFrame();        lf.setLocationRelativeTo(null);        lf.setVisible(true);    }    public void init() {        Container c = this.getContentPane();        JPanel lowerPanel = new MyPanelk();        c.add(lowerPanel);        GroupLayout lowerPanelLayout = new GroupLayout((JComponent) lowerPanel);        lowerPanel.setLayout(lowerPanelLayout);        lowerPanel.setLocale(new java.util.Locale("zh", "TW"));        // lowerPanel.setPreferredSize(new Dimension(1100, 680));        {            jButton1 = new JButton();            jButton1.setText("注册");        }        {            jButton2 = new JButton();            jButton2.setText("\u767b\u5f55");        }        {            jLabel1 = new JLabel();            jLabel1.setText("\u7528\u6237\u540d");            jLabel1.setFont(new java.awt.Font("微软雅黑", 3, 11));            jLabel1.setForeground(new java.awt.Color(255, 255, 255));        }        {            jLabel2 = new JLabel();            jLabel2.setText("\u5bc6\u7801");            jLabel2.setFont(new java.awt.Font("微软雅黑", 3, 11));            jLabel2.setForeground(new java.awt.Color(255, 255, 255));        }        {            jTextField2 = new JPasswordField();            jTextField2.addFocusListener(new FocusAdapter() {                public void focusGained(FocusEvent evt) {                    jTextField2.selectAll();                }            });        }        {            jTextField1 = new JTextField();            jTextField1.addFocusListener(new FocusAdapter() {                public void focusGained(FocusEvent evt) {                    jTextField1.selectAll();                }            });        }        lowerPanelLayout.setVerticalGroup(lowerPanelLayout                .createSequentialGroup()                .addContainerGap(63, 63)                .addGroup(                        lowerPanelLayout                                .createParallelGroup(                                        GroupLayout.Alignment.BASELINE)                                .addComponent(jTextField1,                                        GroupLayout.Alignment.BASELINE,                                        GroupLayout.PREFERRED_SIZE, 21,                                        GroupLayout.PREFERRED_SIZE)                                .addComponent(jLabel1,                                        GroupLayout.Alignment.BASELINE,                                        GroupLayout.PREFERRED_SIZE,                                        GroupLayout.PREFERRED_SIZE,                                        GroupLayout.PREFERRED_SIZE))                .addGap(19)                .addGroup(                        lowerPanelLayout                                .createParallelGroup(                                        GroupLayout.Alignment.BASELINE)                                .addComponent(jTextField2,                                        GroupLayout.Alignment.BASELINE,                                        GroupLayout.PREFERRED_SIZE, 21,                                        GroupLayout.PREFERRED_SIZE)                                .addComponent(jLabel2,                                        GroupLayout.Alignment.BASELINE,                                        GroupLayout.PREFERRED_SIZE,                                        GroupLayout.PREFERRED_SIZE,                                        GroupLayout.PREFERRED_SIZE))                .addGap(29)                .addGroup(                        lowerPanelLayout                                .createParallelGroup(                                        GroupLayout.Alignment.BASELINE)                                .addComponent(jButton2,                                        GroupLayout.Alignment.BASELINE,                                        GroupLayout.PREFERRED_SIZE, 22,                                        GroupLayout.PREFERRED_SIZE)                                .addComponent(jButton1,                                        GroupLayout.Alignment.BASELINE,                                        GroupLayout.PREFERRED_SIZE, 22,                                        GroupLayout.PREFERRED_SIZE))                .addContainerGap(45, 45));        lowerPanelLayout                .setHorizontalGroup(lowerPanelLayout                        .createSequentialGroup()                        .addContainerGap(108, 108)                        .addGroup(                                lowerPanelLayout                                        .createParallelGroup()                                        .addGroup(                                                lowerPanelLayout                                                        .createSequentialGroup()                                                        .addGroup(                                                                lowerPanelLayout                                                                        .createParallelGroup()                                                                        .addComponent(                                                                                jLabel1,                                                                                GroupLayout.Alignment.LEADING,                                                                                GroupLayout.PREFERRED_SIZE,                                                                                46,                                                                                GroupLayout.PREFERRED_SIZE)                                                                        .addGroup(                                                                                GroupLayout.Alignment.LEADING,                                                                                lowerPanelLayout                                                                                        .createSequentialGroup()                                                                                        .addComponent(                                                                                                jLabel2,                                                                                                GroupLayout.PREFERRED_SIZE,                                                                                                26,                                                                                                GroupLayout.PREFERRED_SIZE)                                                                                        .addGap(20)))                                                        .addPreferredGap(                                                                LayoutStyle.ComponentPlacement.RELATED,                                                                12,                                                                Short.MAX_VALUE)                                                        .addGroup(                                                                lowerPanelLayout                                                                        .createParallelGroup()                                                                        .addComponent(                                                                                jTextField2,                                                                                GroupLayout.Alignment.LEADING,                                                                                GroupLayout.PREFERRED_SIZE,                                                                                108,                                                                                GroupLayout.PREFERRED_SIZE)                                                                        .addComponent(                                                                                jTextField1,                                                                                GroupLayout.Alignment.LEADING,                                                                                GroupLayout.PREFERRED_SIZE,                                                                                108,                                                                                GroupLayout.PREFERRED_SIZE)))                                        .addGroup(                                                GroupLayout.Alignment.LEADING,                                                lowerPanelLayout                                                        .createSequentialGroup()                                                        .addPreferredGap(                                                                jLabel2,                                                                jButton1,                                                                LayoutStyle.ComponentPlacement.INDENT)                                                        .addComponent(jButton1,                                                                0, 67,                                                                Short.MAX_VALUE)                                                        .addGap(17)                                                        .addComponent(                                                                jButton2,                                                                GroupLayout.PREFERRED_SIZE,                                                                70,                                                                GroupLayout.PREFERRED_SIZE)))                        .addContainerGap(120, 120));        /**         * 注册监听         */        {            jButton1.addActionListener(new ActionListener() {                public void actionPerformed(ActionEvent evt) {                    // lf.setVisible(false);                    // System.out.println("这里可以显示注册窗口了");                    SubstituteLoginFrame.this.setVisible(false);                    // SubstituteLoginFrame.this.dispose();                    RespondLoginEnter res = new RespondLoginEnter();                    res.testLinkage();                    new LogonJFrame();                    InOn inon = new InOn();// 保存本登录窗口对象                    inon.backToLogin(SubstituteLoginFrame.this);                }            });        }        /**         * 登录监听         */        {            // jButton1.addActionListener(new            // jButton1ActionListener(this));            jButton2.addActionListener(new ActionListener() { // 注册按钮事件                public void actionPerformed(ActionEvent event) { // 事件处理器                    String userName = jTextField1.getText();                    String password = jTextField2.getText();                    // 检查输入合法性                    if (ToolString.isInefficacy(userName)                            || ToolString.isInefficacy(password)) {                        JOptionPane.showMessageDialog(null, "   用户名和密码不能为空",                                "请重新输入", JOptionPane.ERROR_MESSAGE);                        return;                    }                    RespondLoginEnter respondLogin = new RespondLoginEnter();                    try {                        // 连接服务器                        respondLogin.linkage();                        // 包装用户名,密码:request=login★userName=a★userPassword=d★                        String nameAndPass = ToolString.packageLoginData(                                userName, password);                        // 发送用户名,密码                        respondLogin.sendMessage(nameAndPass);// 发送成功后客户端若等不到服务器数据,界面不响应                        // 获得服务器响应 收不到数据的处理?                        System.out                                .println("开始接收服务器数据:loginsuccess or loginfail!");                        String receivedMsg = respondLogin.receiveMsg();                        if (receivedMsg == null) {                            System.out.println("服务器响应超时!");// 能否显示?????????????????                        }                        // respondLogin.close(); //                        // 需要关闭????????????登錄成功也會關閉????????????????????????????                        if (!"loginsuccess".equals(receivedMsg)) {                            JOptionPane.showMessageDialog(null, "用户名或密码错误",                                    "登录失败", JOptionPane.ERROR_MESSAGE);                            return;                        } else {                            // System.out.println("这里开始显示主页并关闭登录窗口");//                            // -------------------------------------------------------                            SubstituteLoginFrame.this.dispose();                            // 登录成功, 显示主页窗口                            new UsedToChangeMyFrame();                        }                    } catch (Exception e) {                        e.printStackTrace();                    }                }            });        }        this.setVisible(true);        this.setResizable(false);        String direct = System.getProperty("user.dir")                + "\\src\\icon\\pro\\key1.gif";        Image img = Toolkit.getDefaultToolkit().getImage(direct);        this.setIconImage(img);        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();        this.setLocation(screenSize.width / 2 - 400 / 2,                screenSize.height / 2 - 250 / 2);        this.setTitle("\u97f3\u4e50\u5e73\u53f0");        // this.setSize(new Dimension(1100, 680));        this.setSize(new Dimension(400, 250));    }}class MyPanelk extends JPanel {    /**     *      */    private static final long serialVersionUID = 1L;    @Override    public void paintComponent(Graphics g) { // 重绘函数        Graphics2D g2 = (Graphics2D) g;        super.paintComponent(g);        String directory = System.getProperty("user.dir")                + "\\src\\icon\\pro\\wow2.jpg";        Image img = Toolkit.getDefaultToolkit().getImage(directory);        g2.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this); // 在面板上绘制背景图片    }}
------解决方案--------------------
Image的getScaledINnstance(int width, int height, int hints)方法
------解决方案--------------------
Java code
  相关解决方案