我正在创建一个简单的程序,我想在其中显示图像和按钮。所以我创建了JFrame
。
此JFrame
包含两个JPanel
,其中一个面板包含JButton
,另一个面板包含我的图片。但图像未显示在面板中。当我将图像添加到JFrame
时,它正常显示。请帮助以下代码!
main()
方法:
public class NewClass2 {
public static void main(String args[]){
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame frm = new JFrm();
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(500,500);
}
});
}
}
初始化JFrm
的 JFrame
类:
class JFrm extends JFrame{
JButton button;
JPanel panel0,panel1;
JFrm(){
panel0 = new JPanel();
panel1 = new JPanel();
button = new JButton("Start");
button.setPreferredSize(new Dimension(100, 30));
panel0.add(button);
panel1.add(new ImageComponent()); //adding image component to panel1 is not working
//add(new ImageComponent()); //adding image component to the frame is working ..
add(panel1,BorderLayout.PAGE_START);
add(panel0,BorderLayout.PAGE_END);
}
}
添加图片的 ImageComponent
课程:
class ImageComponent extends JComponent{
Image img;
ImageComponent(){
img = new ImageIcon("C:\\Users\\Kaushal28\\Desktop\\Aqua-Ball-icon.png").getImage();
}
@Override
public void paint(Graphics g){
g.drawImage(img, 100,100 , null);
}
}
如何将图片添加到JPanel
?
答案 0 :(得分:0)
在将图像添加到JPanel之前,请考虑将图像包装在JLabel中。 见Display a jpg image on a JPanel
class JFrm extends JFrame{
JButton button;
JPanel panel0, panel1;
JFrm(){
panel0 = new JPanel();
panel1 = new JPanel();
button = new JButton("Start");
button.setPreferredSize(new Dimension(100, 30));
panel0.add(button);
ImageIcon image = new ImageIcon("C:\\Users\\Kaushal28\\Desktop\\Aqua-Ball-icon.png");
panel1.add(new JLabel(image));
add(panel1, BorderLayout.PAGE_START);
add(panel0, BorderLayout.PAGE_END);
}
}
答案 1 :(得分:0)
您没有为自定义JComponent
设置大小,因此它会被LayoutManager压缩到零大小。使用setPreferredSize()
设置任何合适的大小。
ImageComponent(){
ImageIcon temp = new ImageIcon("test.png");
img = temp.getImage();
setPreferredSize(new Dimension(temp.getIconWidth(),temp.getIconHeight()));
}
@Override
public void paint(Graphics g){
g.drawImage(img, 0,0 , null);
}