我正在使用带有netbeans的Java Swing图形编辑器来制作我的项目......但是使用它会带来一些限制,例如我无法使用java swing选项添加到jpanel图像。所以我需要对它进行编码,实现一个新的jPanel。
我的问题是java swing图形编辑器生成的代码无法编辑,所以不是在initComponents()部分添加新的JPanel代码,而是在我的构造函数中调用此函数后执行此操作主要是JPanel。
但是我添加的任何代码都不被“Designer”识别,这意味着在制作我的编码对象之后我无法在“Designer”中使用它们,所有内容都必须编码,考虑到更容易在“Designer”工具中预览和移动元素。
我如何编码我想要的东西,但钢材出现在“设计师”中?
提前谢谢
答案 0 :(得分:2)
以下是使用NetBeans GUI编辑器将图像添加到JPanel
的两种方法。下面的ImagePanel
类是使用New JPanel Form
命令创建的。
非设计者:第一种方法修改构造函数以设置背景图像,类重写paintComponent()
以绘制图像。编辑器中的代码没有变化。
设计器:使用GUI设计器,第二种方法添加名为JLabel
的{{1}}。使用居中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()
http://i41.tinypic.com/dmw4nl.png http://i41.tinypic.com/dmw4nl.png