gpt4 book ai didi

Java Swing 为游戏添加组件

转载 作者:行者123 更新时间:2023-12-04 05:30:25 24 4
gpt4 key购买 nike

我正在用 Java Swing 编写游戏,并且有几层需要实现的类。

以下是类(class):

  • Main()//设置窗口,制作游戏,并设置可见
  • Game()//绘制主游戏 Canvas ,维护有关游戏的数据,告诉每个对象绘制自己
  • Board()//绘制房间和背景图形
  • Room()//绘制房间内的东西,跟踪位置
  • Items()//位置、颜色、功能等
  • CollectibleItems()//扩展项目
  • Creatures()//扩展项目
  • ControlPanel()//在里面放一个按钮,做一些事情
  • StatePanel()//在房间的面板中放置文字,以及是否锁定

  • 主要类:
    import java.awt.*;

    import javax.swing.*;

    import javax.swing.border.*;

    public class Main extends JFrame {
    public static void main (String [] args) {
    new Main ();
    }

    public Main () {
    // Window setup
    setSize (700, 450);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container content = getContentPane();
    content.setLayout(new BorderLayout());


    // Put a Game in
    Game myGame=new Game ();
    myGame.setBorder(new LineBorder(Color.black, 9));
    content.add(myGame, BorderLayout.CENTER);

    setVisible (true);
    }

    这是我的游戏课。从这里我要添加Board和Panels,我希望Board添加Rooms等。我不知道如何封装类仍然添加它们和setVisible。我知道如何在 main 中做到这一点,但是有没有办法使用类似的 content.add() 类型的东西向 Game 添加东西?
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;

    public class Game extends JComponent {
    public void paintComponent (Graphics g) {

    JPanel ControlPanel=new JPanel();
    ControlPanel.setLayout(new FlowLayout());
    ControlPanel.setBorder(new LineBorder(Color.red, 9));
    }
    }

    TL;DR-如何封装和显示不同的类? JavaSwing 新手...

    最佳答案

    首先...不要这样做!!永远!!

    public void paintComponent (Graphics g) {

    JPanel ControlPanel=new JPanel();
    ControlPanel.setLayout(new FlowLayout());
    ControlPanel.setBorder(new LineBorder(Color.red, 9));
    }

    您还必须调用 super.paintComponent同样,除非你有一个非常非常好的理由不这样做。这些方法做了很多重要的背景工作。

    切勿在任何 paintXxx 的上下文中修改任何组件方法。这将使您陷入无限循环并最终消耗所有 CPU。

    我会先通读一遍
  • Creating a GUI With JFC/Swing
  • Performing Custom Painting
  • 2D Graphics
  • 关于Java Swing 为游戏添加组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700434/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com