【问题标题】:My game objects dont show up when using null使用 null 时我的游戏对象不显示
【发布时间】:2019-06-24 18:41:16
【问题描述】:

当我使用绝对布局时,我的对象出现在哪里,但我无法移动它们,所以我将布局更改为 null,现在我的对象甚至没有出现。请帮忙。

没有尝试太多,不知道该尝试什么。

    try {
        enemies = new LinkedList<>();

        frame = new JFrame();
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
        frame.setLayout(null);
        frame.getContentPane().setBackground(Color.black);
        frame.setPreferredSize(new Dimension(800, 800));

        ActionListener spawnEnemies = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                spawnEnemies();
            }
        };
        ActionListener moveEnemies = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                moveEnemies();
            }
        };

        spawner = new Timer(50000, spawnEnemies);
        spawner.start();
        mover = new Timer(10, moveEnemies);
        mover.start();
        addKeyListener(new KeyInput(this));

        player = new PlayerObj("white", 399, 399, frame);
        player.setPreferredSize(new Dimension(50, 50));
        //AddActionEvent, Keylogging, OnbuttonPress, Autogenerating enemies, timers.
        frame.getContentPane().add(player);

        spawnEnemies();

        frame.revalidate();
        frame.repaint();
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    } catch (IOException ex) {
        Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
    }

【问题讨论】:

  • 欢迎来到 Stack Overflow!请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。
  • 为什么用javascript和java标记?

标签: javascript java


【解决方案1】:

我不确定你想要什么代码,但我假设你想在屏幕上的指定位置显示敌人/玩家。我个人不建议使用添加到 JFrame 的组件来显示它。这意味着没有布局,JFrame 将不知道如何放置这些对象。

这是解决您问题的另一种方法,但它是一种完全不同的方法。

您必须创建一个 JFrame,并将其内容窗格设置为新的 JPanel(建议从 JPanel 扩展您的类并将其自身添加到 JFrame,这样可以使事情变得更容易)。 然后,通过创建以下内容来覆盖重绘方法:

protected void paintComponent(Graphics g){
}

当您调用 repaint() 方法时,它将运行此代码。所以在这里,你可以画whatewer和你想要的任何地方(在你的JPanel里面)。而且您不必弄乱布局,只需将其保留为默认值即可。

绘画示例:

g.setColor(Color.blue);
g.fillRect(50,50,120,120);
//
g.drawImage(yourImage,100,100,this);

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2016-11-04
    • 1970-01-01
    • 2015-04-06
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 2023-03-26
    相关资源
    最近更新 更多