我似乎无法弄清楚这一点
请帮忙我需要这个来继续我的项目。
Awww我必须添加这个以允许我发布
import javax.swing.*;
import java.awt.*;
@SuppressWarnings("serial")
public class MainFrame extends JFrame {
public static void Draw(){
DrawFrame();
}
public static void DrawFrame(){
int h = 600;
int w = 340;
JFrame frame = new JFrame();
JLabel background1 = new JLabel(new ImageIcon("/res/mariocraft_main.png"));
frame.setResizable(false);
frame.setSize(h, w);
frame.setTitle("MarioCraft");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(background1);
background1.setVisible(true);
background1.setIcon(new ImageIcon("/res/mariocraft_main.png"));
background1.setText("Background failed to load");
}
}
答案 0 :(得分:3)
JLabel始终以实际尺寸显示图像,因此您不应手动设置框架的大小。
相反,代码应该是这样的:
JLabel background1 = new JLabel(new ImageIcon("/res/mariocraft_main.png"));
JFrame frame = new JFrame();
frame.add(background1);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
答案 1 :(得分:1)
您需要将<{1}}实例添加到{/ 1>} 之前 才能实现它(即让它可见)。另外,删除这三个电话:
JLabel
完全没必要。此外,另一种将背景图像设置为组件的方法是覆盖它的JFrame
方法并将图像直接绘制到它的background1.setVisible(true);
background1.setIcon(new ImageIcon("/res/mariocraft_main.png"));
background1.setText("Background failed to load");
对象。
答案 2 :(得分:0)
是否要将JLabel
设置为JFrame
的背景图片。然后,
frame.setContentPane(new JLabel(new ImageIcon("someimage.jpg"));
查看针对here
的示例代码段frame.setLayout(new BorderLayout());
frame.setContentPane(new JLabel(new ImageIcon("someimage.jpg")));
frame.setLayout(new FlowLayout());
l1=new JLabel("Here is a button");
b1=new JButton("I am a button");
frame.add(l1);
frame.add(b1);
答案 3 :(得分:0)
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Mainframe extends JFrame
{
public JLabel image ;
public Container c;
public Mainframe()
{
c=this.getContentPane();
image=new JLabel(new ImageIcon("bg.jpg"));
image.setSize(500, 550);
c.setLayout(new FlowLayout());
c.add(image);
add(image);
this.setSize(500, 550);
this.show();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
new Mainframe();
}
}