-->

的Java Swing不显示更改为源(Java swing doesn't show cha

2019-10-21 14:03发布

我使用的Java Swing的图形编辑器与NetBeans让我的项目......但使用它带来了一定的局限性就像我不能添加到JPanel的图像,使用的Java Swing选项。 所以我需要编写它,实现一个新JPanel。

我的问题是由Java摆动图形编辑器生成的代码不能这样反而编辑在此的initComponents功能后,我做它()部分被称为在我的主JPanel的构造函数中添加新JPanel代码。

但我添加任何代码不会被“设计师”,这意味着让我的编码对象后,我无法在“设计师”使用它们,一切都必须进行编码,这是考虑如何更容易被预览和移动疼痛认可在“设计”工具元件。

我如何代码,我想要什么,但钢出现在“设计师”?

Thx提前

Answer 1:

这里有两种方式来添加图像到JPanel使用NetBeans GUI编辑器。 类ImagePanel下面创建使用New JPanel Form命令。

非设计师 :第一种方法修改构造函数来设置背景图片,和类重写paintComponent()来绘制图像。 在编辑器中无代码倍数变化。

设计师 :使用GUI设计器,第二种方法增加了一个JLabel命名imageLabel 。 该代码创建JLabel ,居中Icon进去命名属性Custom Creation Code ,而下面两行去Post-Creation Code

package overflow;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class ImagePanel extends javax.swing.JPanel {

    private Image image;

    /** Creates new form ImagePanel */
    public ImagePanel(Image image) {
        this.image = image;
        this.setPreferredSize(new Dimension(
            image.getWidth(null), image.getHeight(null)));
        initComponents();
    }

    @Override
    protected void paintComponent(Graphics g) {
        g.drawImage(image, 0, 0, null);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        imageLabel = new JLabel(new ImageIcon("image2.jpg"), JLabel.CENTER);
        imageLabel.setHorizontalTextPosition(JLabel.CENTER);
        imageLabel.setVerticalTextPosition(JLabel.TOP);

        setLayout(new java.awt.GridLayout());

        imageLabel.setText("imageLabel");
        add(imageLabel);
    }// </editor-fold>


    // Variables declaration - do not modify
    private javax.swing.JLabel imageLabel;
    // End of variables declaration

}

这里的一个合适的Main类和main()以显示面板的方法:

package overflow;

import java.awt.EventQueue;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                try {
                    f.add(new ImagePanel(ImageIO.read(new File("image1.jpg"))));
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

http://i41.tinypic.com/dmw4nl.png http://i41.tinypic.com/dmw4nl.png



文章来源: Java swing doesn't show changes to source