Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要为我的图像设置一个精确的位置,但它没有';你不能动吗?_Java_Image_Location_Frame_Jlabel - Fatal编程技术网

Java 我需要为我的图像设置一个精确的位置,但它没有';你不能动吗?

Java 我需要为我的图像设置一个精确的位置,但它没有';你不能动吗?,java,image,location,frame,jlabel,Java,Image,Location,Frame,Jlabel,我正在做一个游戏,有一些问题。现在,我得到了我想在画面上使用的图像/字符,但它出现在屏幕顶部,并且不会移动。我需要能够使用坐标来放置我想放置的位置。我到处都找过,但没有一个代码看起来像我的。另外,我对Java非常陌生,所以请尽可能具体。 这是我的密码: 头等舱: import java.awt.Color; import java.awt.Dimension; import javax.swing.*; public class JumpyBoy { public static voi

我正在做一个游戏,有一些问题。现在,我得到了我想在画面上使用的图像/字符,但它出现在屏幕顶部,并且不会移动。我需要能够使用坐标来放置我想放置的位置。我到处都找过,但没有一个代码看起来像我的。另外,我对Java非常陌生,所以请尽可能具体。 这是我的密码:

头等舱:

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.*;
public class JumpyBoy {

    public static void main(String[] args) {
        JFrame frame = new JFrame ("Boy");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setPreferredSize (new Dimension (1000, 700));
        Boy panel = new Boy();

        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);

    }

}
图像的类:

import javax.swing.*;
import java.awt.*;
import java.awt.Dimension;
public class Boy extends JPanel {

    JLabel Boy1;
    ImageIcon Boy;

    public Boy () {
        setBackground (Color.white);

        Boy = new ImageIcon("Boy.png");
        Boy1 = new JLabel (Boy, SwingConstants.CENTER);
        Dimension size = Boy1.getPreferredSize();
        Boy1.setBounds(200, 400, 32, 321);
        //right here what should I do ^

        JPanel panel = new JPanel();
        panel.add (Boy1);
        add (panel);
    }
}

首先,当您刚接触java时,不要用gui编写游戏或任何东西。其次,为了移动它,只需使用不同的坐标再次调用setBounds。

Swing广泛使用布局管理器,这使得设计可以在多个平台和渲染环境下工作的动态用户界面成为可能

虽然可能,但以这种方式使用组件并不容易

首先,需要删除预先存在的布局管理器。默认情况下,
JPanel
使用一个
FlowLayout
,这在一定程度上干扰了您的尝试

public Boy() {
    setLayout(null);
通过执行此操作,您将负责在面板中定位具有的零部件

接下来,您不需要
Boy
中的
JPanel
来保存
JLabel
,只需将
Boy1
添加到
Boy
面板即可

Boy1 = new JLabel (Boy, SwingConstants.CENTER);
Boy1.setBounds(200, 400, 32, 321);

// This doesn't make sense...
//JPanel panel = new JPanel();
//panel.add (Boy1);
add (Boy1);
准备好面对各种各样的怪异

话虽如此,通常情况下,你不会在游戏中这样做,这并不是呈现内容的最有效方法,但看起来很简单,但会有一点开销

通常,您会将内容直接呈现到
图形
上下文中,这使您能够更好地控制工件的分层和放置


请查看更多详细信息…

谢谢您这么具体,我马上就来试试,并告诉您消息。老实说,我知道你不会真的把它用于游戏,但这是我们所学到的。我高中时学的是Java 1。游戏会像flappy bird 2d一样,但每次有石头或其他东西挡在路上时,一个孩子就会在地上跳跃。非常简单。是否将boy1添加到boy面板?但是我没有男孩面板。男孩就是图像本身。我做了空的事情,图像不再显示了。我猜是因为这个。不,直接将它添加到
Boy
类(面板),不要麻烦将
JLabel
添加到另一个
JPanel
然后将其添加到
Boy
面板。这可能看起来不相关,但我可以收到你的电子邮件吗?今年夏天,我计划非常认真地学习Java,并可能进入Android应用程序制作领域。当路上有一条小沟时,能有人帮助我将是我的荣幸。如果你没有时间或者不能,那就完全没问题了。这将意味着很多。