[英]Java swing doesn't show changes to source
我正在使用带有 netbeans 的 Java Swing 图形编辑器来制作我的项目……但是使用它会带来一些限制,例如我无法使用 java swing 选项将图像添加到 jpanel。 所以我需要对其进行编码,实现一个新的 jPanel。
我的问题是无法编辑由 java swing 图形编辑器生成的代码,因此我没有在主 JPanel 的构造函数中调用此函数后在 initComponents() 部分中添加新的 JPanel 代码。
但是“设计器”无法识别我添加的任何代码,这意味着在制作我的编码对象后,我无法在“设计器”中使用它们,并且所有内容都必须进行编码,考虑到预览和移动要容易得多,这很痛苦“设计器”工具中的元素。
我如何编码我想要的但钢铁出现在“设计师”中?
提前谢谢
以下是使用 NetBeans GUI 编辑器将图像添加到JPanel
两种方法。 下面的类ImagePanel
是使用New JPanel Form
命令创建的。
非设计师:第一种方法修改构造函数以设置背景图像,该类覆盖paintComponent()
以绘制图像。 编辑器中没有代码折叠更改。
设计器:使用 GUI 设计器,第二种方法添加一个名为imageLabel
的JLabel
。 创建带有居中Icon
的JLabel
的代码位于名为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);
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.