JLabel в качестве фонового изображения - PullRequest
0 голосов
/ 08 декабря 2011

Кажется, я не могу понять это.
Пожалуйста, помогите мне, чтобы это работало, чтобы продолжить мой проект.
Ой, я должен добавить это, чтобы я мог опубликовать

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");

    }

}

Ответы [ 4 ]

3 голосов
/ 08 декабря 2011

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 голос
/ 08 декабря 2011

Вам нужно добавить экземпляр JLabel к JFrame до того, как вы поймете это (то есть сделаете его видимым). Также удалите эти три звонка:

background1.setVisible(true);
background1.setIcon(new ImageIcon("/res/mariocraft_main.png"));
background1.setText("Background failed to load");

Они совершенно не нужны. Кроме того, другой подход к установке фонового изображения для компонента заключается в переопределении его метода paintComponent и рисовании изображения непосредственно в его объекте Graphics.

0 голосов
/ 03 июля 2014
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();
    }

}
0 голосов
/ 17 июля 2013

Вы хотите установить JLabel в качестве фонового изображения для JFrame.Затем

frame.setContentPane(new JLabel(new ImageIcon("someimage.jpg"));

См. Фрагмент кода, взятый для здесь

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);
...