0

去年我做了一些简单的 Java 应用程序[我是一名工科学生,上学期通过一门学科我爱上了 Java]——我学到了很多关于类、对象、监听器和其他各种东西的知识。问题是我不得不使用不寻常的库(我认为它们被优化以缩短一些较长的代码部分,只是为了让我们专注于面向对象的基础知识) - 这里是链接:http ://useobjects.net/ (从未在其他任何地方见过这些)。现在我正在尝试用 Java 创建一个简单的游戏,(纸牌游戏,比如纸牌游戏)不使用这些库 - 只使用 swing 和另一个众所周知的“核心”Java 库 - 我遇到了各种(通常很少)问题主要是“日常”简单的任务。

第一个问题 - 如何将文件中的图像添加到 Java 中?比如说,我有可以显示或还原的类卡,我需要使用 2 张图像(一张用于背面,一张用于正面);而且我找不到任何解释 BufferedImage、View、Image 等的整个过程的教程。(为了比较,在上面提到的库中,它只是这样的:

ImageView cardBack = new ImageView(positionX, positionY, height, width, filepath, angle etc.);

并添加了图像并完成了任务。

第二个问题是关于主应用程序窗口。在我们的旧库中,主类中是这样的:

MainWindow mainWindow = new MainWindow(title,height,width);
GroupView mainGroup = mainWindow.getRootGroup();

但是当我试图找出有关创建窗口的任何信息时,我只找到了 JFrame-solution,我想请您提供一个简单的实现示例,以及可能如何解决类(如果我应该创建一个“主”类JFrame 将在哪里只是一个元素,或者制作类似于 MainWindow 类的东西并在此类中创建 JFrame,并在 Main 中创建此类的实例,或者......简单地说,我的 Java 编码知识和 XP 是不完全符合约定,所以我以这种方式请求一些建议)。

非常感谢你。

4

2 回答 2

0

“现在我正在尝试用 Java 创建一个简单的游戏,(纸牌游戏,比如纸牌游戏)而不使用这些库 - 只使用 swing 和另一个众所周知的“核心”Java 库”

首先,您提供的代码不是核心 Java。它是JavaFX。如果您想学习 Swing,Oracle 教程是一个很好的起点。您将在该链接中找到 SwingJavaFX 路径的选项

至于图像,你有选择。您可以将 a 加载ImageIcon到 a 上,JLabel也可以将其绘制到 aJPanel或上JComponent。这两个选项都可以在这个线程中看到

“我是否应该创建一个“Main”类,其中 JFrame 只是一个元素,或者制作类似于 MainWindow 类的东西并在此类中创建 JFrame,并在 Main 中创建此类的实例”

请参阅扩展 JFrame 与在程序中创建它。如果您浏览了上述链接中的一些教程,只需查看代码示例,您就会很快掌握良好实践。

于 2014-03-04T18:48:02.167 回答
0

您可以从以下代码开始:

public static void show() throws Exception
{
    final BufferedImage image = ImageIO.read( new File( "<path>" ) );

    JFrame window = new JFrame();
    window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    window.setSize( 300, 300 );

    window.setLayout( new BorderLayout() );
    window.add( new JLabel( "My Image name" ), BorderLayout.NORTH );
    window.add( new JImage( image ), BorderLayout.CENTER );

    window.setVisible( true );
}

static class JImage extends JPanel implements MouseListener
{

    private BufferedImage image;

    public JImage( BufferedImage image )
    {
        this.image = image;
        addMouseListener( this );

    }

    @Override
    protected void paintComponent( Graphics g )
    {
        super.paintComponent( g );
        g.drawImage( image, 0, 0, null ); // see javadoc for more info on the parameters
    }

    @Override
    public void mouseClicked( MouseEvent ev )
    {
        System.out.println( String.format( "mouse clicked (x:%d, y:%s)", ev.getX(), ev.getY() ) );
    }

    @Override
    public void mouseEntered( MouseEvent arg0 )
    {}

    @Override
    public void mouseExited( MouseEvent arg0 )
    {}

    @Override
    public void mousePressed( MouseEvent ev )
    {
        System.out.println( String.format( "mouse pressed (x:%d, y:%s)", ev.getX(), ev.getY() ) );
    }

    @Override
    public void mouseReleased( MouseEvent ev )
    {
        System.out.println( String.format( "mouse released (x:%d, y:%s)", ev.getX(), ev.getY() ) );
    }
}

这将创建一个简单的窗口,其中包含一个图像和顶部的标签。您可能应该考虑迁移到 JavaFX,但老实说,我对客户端 java ui 编程知之甚少。

于 2014-03-04T18:13:29.083 回答