Java 在它的中心位置,也许我不知道怎么说。。。“南”、“北”等元素…@vostfrgies:然后将其包装在使用GridBagLayout的JPanel中,并将包装器JPanel添加到JFrame BorderLayout中。CENTER@vostfrguys:有

Java 在它的中心位置,也许我不知道怎么说。。。“南”、“北”等元素…@vostfrgies:然后将其包装在使用GridBagLayout的JPanel中,并将包装器JPanel添加到JFrame BorderLayout中。CENTER@vostfrguys:有,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,在它的中心位置,也许我不知道怎么说。。。“南”、“北”等元素…@vostfrgies:然后将其包装在使用GridBagLayout的JPanel中,并将包装器JPanel添加到JFrame BorderLayout中。CENTER@vostfrguys:有关我所说的“包装器”的示例,请参见编辑以回答JPanelThe class Panneau现在正在显示一幅图像,但在未来它将显示玩家和其他实体的游戏地图,我制作了一个2D游戏,在北部布局面板中有HP,以及昵称等。。。在South layout面


在它的中心位置,也许我不知道怎么说。。。“南”、“北”等元素…@vostfrgies:然后将其包装在使用GridBagLayout的JPanel中,并将包装器JPanel添加到JFrame BorderLayout中。CENTER@vostfrguys:有关我所说的“包装器”的示例,请参见编辑以回答JPanelThe class Panneau现在正在显示一幅图像,但在未来它将显示玩家和其他实体的游戏地图,我制作了一个2D游戏,在北部布局面板中有HP,以及昵称等。。。在South layout面板中,有一些按钮是拼写,或者包“inventory”谢谢,但我不想将它添加到JFrame/JDialog的中心,我希望它作为一个JPanel放在“中心”,就像我有这样的东西:this.getContentPane().add(JPanel1,java.awt.BorderLayout.NORTH)@请看我对我的回答的评论。@疯狂:1+当然。@Vostfr伙计们,是的,还有?你有没有尝试过这些建议?是的,它没有按照我想要的那样工作。我在尝试别的东西,在一张纸上画画。轻松多了,谢谢大家anyway@vostfrguys“Graphics t=Map.getGraphics();”-no和“paintComponent(t);“不,这不是绘制的方式。默认情况下,
paintComponent
是受保护的,这有一个很好的原因,您没有理由调用它,这不是绘画的方式。我知道,但我不想将它添加到JFrame/JDialog的中心,我希望它作为一个JPanel放置在“中心”,就像我有这样的东西:this.getContentPane().add(JPanel1,java.awt.BorderLayout.NORTH);@vostfrgies:请看我对我答案的评论。@mad:1+当然。@vostfrgies是的,还有?你有没有尝试过任何建议?是的,它没有按照我想要的那样工作。我正在尝试其他东西,用jPanel画画。非常简单,谢谢大家anyway@vostfrguys“Graphics t=Map.getGraphics();”-no和“paintComponent”(t) "不,这不是绘画是如何完成的。有一个很好的理由,为什么<代码> PruttCuths<代码>默认为“代码>保护/代码>,你没有理由调用它,这不是绘画是怎么做的。你不应该把一个全新的问题移植到你原来的问题上。如果你有一个新的和单独的问题,那么请考虑问一个问题。一个新的和独立的问题。你不应该把一个全新的问题移植到你原来的问题上。如果你有一个新的和单独的问题,那么请考虑问一个新的和单独的问题。
public class Panneau extends JPanel { 

    public void paintComponent(Graphics g){
        try {
            Image img = ImageIO.read(new File("src/disantiammo/image/image.png"));
            g.drawImage(img, 0, 0, this);
        } catch (IOException e) {
            e.printStackTrace();
        }   
    }
}
//for now it is not doing anything but it will...
  this.setContentPane(new Panneau());
this.getContentPane().add(new Panneau(), java.awt.BorderLayout.CENTER);
  Graphics t = Map.getGraphics();
    paintComponent(t);
public void paintComponent(Graphics g){
 super.paintComponents(g);
 g.drawLine(0, 0, 50, 150);
}
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;

@SuppressWarnings("serial")
public class CenteredImage extends JPanel {
    private static final String IMG_PATH = "https://upload.wikimedia.org/wikipedia/commons/"
            + "thumb/f/f8/Portrait_d%27une_Femme_%C3%A0_sa_Toilette%2C_by_Titian%2C_"
            + "from_C2RMF_retouched.jpg/300px-Portrait_d%27une_Femme_%C3%A0_sa_"
            + "Toilette%2C_by_Titian%2C_from_C2RMF_retouched.jpg";
    private BufferedImage img;

    public CenteredImage(BufferedImage img) {
        this.img = img;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (img != null) {
            g.drawImage(img, 0, 0, this);
        }
    }

    @Override
    public Dimension getPreferredSize() {
        Dimension prefSize = super.getPreferredSize();
        if (isPreferredSizeSet() || img == null) {
            return super.getPreferredSize();
        }
        return new Dimension(img.getWidth(), img.getHeight());
    }


    private static void createAndShowGui() {
        BufferedImage img = null;
        try {
            URL imgUrl = new URL(IMG_PATH);
            img = ImageIO.read(imgUrl);
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(-1);
        }

        CenteredImage mainPanel = new CenteredImage(img);

        JFrame frame = new JFrame("CenteredImage");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(800, 650));
        frame.getContentPane().setLayout(new GridBagLayout());
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> createAndShowGui());
    }
}
private static void createAndShowGui() {
    BufferedImage img = null;
    try {
        URL imgUrl = new URL(IMG_PATH);
        img = ImageIO.read(imgUrl);
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(-1);
    }

    CenteredImage centeredImagePanel = new CenteredImage(img);

    JPanel wrapperPanel = new JPanel(new GridBagLayout());
    wrapperPanel.add(centeredImagePanel);

    JFrame frame = new JFrame("CenteredImage");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(800, 650));
    // frame.getContentPane().setLayout(new GridBagLayout());
    frame.getContentPane().add(wrapperPanel);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> createAndShowGui());
}
public class Panneau extends JPanel { 

    private BufferedImage img;

    public Panneau() throws IOException {
        img = ImageIO.read(getClass().getResource("/disantiammo/image/image.png")); 
    }

    public void getPrefferedSize() {
        return img == null ? new Dimension(0, 0) : new Dimension(img.getWidth(), img.getHeight());
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (img != null) {
            g.drawImage(img, 0, 0, this);
        }
    }
}