Java Swing-将图像添加到GUI中

Java Swing-将图像添加到GUI中,java,image,swing,Java,Image,Swing,所以,根据我上一篇文章,我想添加一些图片并设置背景色。我尝试了一些事情,每次我都这么做。它总是给我错误 我试过了 setBackground(args); 及 他们不为我工作。谁能帮我一下吗 好的,我试过迪莎写的帖子。小程序仍然保持相同的颜色,而不是黑色 这是您正在寻找的解决方案: 创建一个名为likecom.icon的包 将图标添加到该软件包(复制/粘贴) 您将在按钮上添加如下图标: button.setIcon(new ImageIcon(NameOfClass.class.getReso

所以,根据我上一篇文章,我想添加一些图片并设置背景色。我尝试了一些事情,每次我都这么做。它总是给我错误

我试过了

setBackground(args);

他们不为我工作。谁能帮我一下吗

好的,我试过迪莎写的帖子。小程序仍然保持相同的颜色,而不是黑色


这是您正在寻找的解决方案:

  • 创建一个名为like
    com.icon的包

  • 将图标添加到该软件包(复制/粘贴)

  • 您将在按钮上添加如下图标:

    button.setIcon(new ImageIcon(NameOfClass.class.getResource("/com/icon/nameOfIcon.png")));
    
  • 请确保它们是.png格式。

    试试这个 对于设置的背景色,使用
    setBackground(color.color\u name)对于设置图像,请尝试下面的代码

    Image bgImage= Toolkit.getDefaultToolkit().getImage("wallpaper_adrift.jpg");
    contentPane.setBackgroundImage(bgImage);
    

    也指和

    开始时,请务必学习并坚持

    为了给您的
    JFrame
    提供背景色,因为您已经在
    中心添加了一个
    JPanel
    。 因此,您无法通过书写获得一种背景色:

    interfaceFrame.setBackground(Color.black);
    
    现在,您必须将
    JPanel
    的不透明属性设置为true,并为相同的设置一种背景色,如:

    setOpaque(true);
    setBackground(Color.BLUE);
    
    在您的菜单栏中类的构造函数

    这是您修改过的代码:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Gmine {
            JFrame interfaceFrame;
            JButton singleplayerButton, multiplayerButton, optionsButton, quitButton;
    
    
            public Gmine() {
                EventQueue.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                        } catch (ClassNotFoundException ex) {
                        } catch (InstantiationException ex) {
                        } catch (IllegalAccessException ex) {
                        } catch (UnsupportedLookAndFeelException ex) {
                        }
    
                        interfaceFrame = new JFrame("G-Mine");
                        interfaceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        interfaceFrame.setLayout(new BorderLayout());
                        interfaceFrame.setSize(800,500);
                        //interfaceFrame.setBackground(Color.black);
                        interfaceFrame.add(new MenuPane());
                        interfaceFrame.setLocationRelativeTo(null);
                        interfaceFrame.setVisible(true);
                    }
                });
            }
    
            public class MenuPane extends JPanel {
    
                public MenuPane() {
                    setLayout(new GridBagLayout());
    
                    setOpaque(true);
                    setBackground(Color.BLUE);
    
                    singleplayerButton = new JButton("SinglePLayer");
                    multiplayerButton = new JButton("MultiPlayer");
                    optionsButton = new JButton("Options");
                    quitButton = new JButton("Quit");
    
                    GridBagConstraints gbc = new GridBagConstraints();
                    gbc.gridx = 0;
                    gbc.gridy = 0;
                    gbc.fill = GridBagConstraints.HORIZONTAL;
                    gbc.ipadx = 20;
                    gbc.ipady = 20;
    
                    add(singleplayerButton, gbc);
                    gbc.gridy++;
                    add(multiplayerButton, gbc);
                    gbc.gridy++;
                    add(optionsButton, gbc);
                    gbc.gridy++;
                    add(quitButton, gbc);
                }
            }
            public static void main(String[] args) {
                new Gmine();
            }
    }
    
    现在,为了将图像添加到项目中,您可以查看以下关于如何添加图像的答案,也可以从以下小示例代码中获得帮助:

    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.URL;
    import javax.imageio.ImageIO;
    import javax.swing.*;
    
    public class PaintingExample
    {
        private CustomPanel contentPane;
        private JTextField userField;
        private JPasswordField passField;
        private JButton loginButton;
    
        private void displayGUI()
        {
            JFrame frame = new JFrame("Painting Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            contentPane = new CustomPanel();        
    
            frame.setContentPane(contentPane);
            frame.pack();
            frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public static void main(String... args)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    new PaintingExample().displayGUI();
                }
            });
        }
    }
    
    class CustomPanel extends JPanel
    {
        private BufferedImage image;
    
        public CustomPanel()
        {
            setOpaque(true);
            setBorder(BorderFactory.createLineBorder(Color.BLACK, 5));
            try
            {
                /*
                 * Since Images are Application Resources,
                 * it's always best to access them in the
                 * form of a URL, instead of File, as you are doing.
                 * Uncomment this below line and watch this answer
                 * of mine, as to HOW TO ADD IMAGES TO THE PROJECT
                 * https://stackoverflow.com/a/9866659/1057230
                 * In order to access images with getClass().getResource(path)
                 * here your Directory structure has to be like this
                 *                 Project
                 *                    |
                 *         ------------------------
                 *         |                      |
                 *        bin                    src
                 *         |                      |
                 *     ---------             .java files             
                 *     |       |                   
                 *  package   image(folder)
                 *  ( or              |
                 *   .class        404error.jpg
                 *   files, if
                 *   no package
                 *   exists.)
                 */
                //image = ImageIO.read(
                //      getClass().getResource(
                //              "/image/404error.jpg"));
                image = ImageIO.read(new URL(
                            "http://gagandeepbali.uk.to/" + 
                                    "gaganisonline/images/404error.jpg"));
            }
            catch(IOException ioe)
            {
                System.out.println("Unable to fetch image.");
                ioe.printStackTrace();
            }
        }
    
        /*
         * Make this one customary habbit,
         * of overriding this method, when
         * you extends a JPanel/JComponent,
         * to define it's Preferred Size.
         * Now in this case we want it to be 
         * as big as the Image itself.
         */
        @Override
        public Dimension getPreferredSize()
        {
            return (new Dimension(image.getWidth(), image.getHeight()));
        }
    
        /*
         * This is where the actual Painting
         * Code for the JPanel/JComponent
         * goes. Here we will draw the image.
         * Here the first line super.paintComponent(...),
         * means we want the JPanel to be drawn the usual 
         * Java way first, then later on we will
         * add our image to it, by writing the other line,
         * g.drawImage(...).
         */
        @Override
        protected void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            g.drawImage(image, 0, 0, this);
        }
    }
    
    请取消注释下面给出的行,并在指定位置添加图像:

    image = ImageIO.read(
          getClass().getResource(
                  "/image/404error.jpg")); 
    
    如果仍有疑问,请提出任何问题,如果在我的范围内,我将尽力提供信息:-)

    image = ImageIO.read(
          getClass().getResource(
                  "/image/404error.jpg"));