小编Sid*_*Sid的帖子

在Java中为简单的棋盘游戏创建图形

我用Java创建了一个棋盘游戏,原理上与棋子没有什么不同.它在控制台中工作正常,但现在我正在尝试创建图形.我有一个Piece类,一个Tile类,它检查它是否为空或被白色或黑色的棋子片段占用,Grid类跟踪矩阵中的瓦片,以及Game类.

目前,游戏可以在Grid类中播放; 当我们运行Grid类时,用户在控制台中指定棋盘的大小,然后通过给出用户希望选择的棋子的x和y坐标来玩游戏.我想改变的是在Game类中运行游戏,它是JPanel的扩展并实现MouseListener(下面给出的代码).游戏板将是一个固定的大小(我将从5x5开始),我画了一个应该在游戏背景中的网格图片.将有一个实例变量(Grid g = new Grid(5,5)).我还画了将要使用的不同"跳棋"片段的图片,它们应该在特定的瓷砖上分布在前景中.我想要发生的是当用户点击一块瓷砖时,棋子会移动.理想情况下,我会这样做,以便程序看到鼠标点击的地方的坐标(说JPanel是500x500像素,用户点击带坐标的像素(0,500),然后我们检查是否(0,500)属于一些瓷砖,如果它没有那么没有任何反应,如果它确实属于网格上的瓷砖g然后g.play(某事,某事)).

            import java.awt.Color;
            import java.awt.FlowLayout;
            import java.awt.Graphics;
            import java.awt.event.MouseEvent;
            import java.awt.event.MouseListener;
            import javax.swing.JFrame;
            import javax.swing.JLabel;
            import java.util.*;
            import java.awt.*;
            import java.awt.event.*;
            import java.awt.FlowLayout;
            import java.awt.event.MouseEvent;
            import java.awt.event.MouseListener;
            import javax.swing.*;

            public class Game extends JPanel implements MouseListener {

                private Grid g = new Grid(5,5);

                public Game() {
                    JFrame frame = new JFrame("Boardgame");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLayout(new FlowLayout());

                    frame.setLayout(new FlowLayout());
                    frame.setPreferredSize(new Dimension(500,500));
                    frame.pack();
                    frame.setVisible(true);
                    frame.addMouseListener(this);

                }
                public void mouseClicked(MouseEvent e) {
                        //here we check if the user clicked …
Run Code Online (Sandbox Code Playgroud)

java graphics swing jpanel mouseevent

3
推荐指数
1
解决办法
6354
查看次数

将Java项目转换为Android项目

我有一个用Eclipse编写的Java程序,我想将其改为Android应用程序.因此,作为第一步,我想将相应的Java项目转换为Android项目,我可以在Eclipse中使用ADT插件或在Android Studio中运行.

这似乎是一个常见问题.我读到的第一个指南没有用,因为它只包含一个例子.然后,这个问题已经在这个网络上被问了两次,(显然)没有令人满意的答案(所以我认为再次提问是可以接受的):

第一个答案涵盖了四种可能的解决方案,但正如评论中所指出的,目前它们似乎都没有.如上所述,ADT插件不再支持选择"Android>转换为Android项目",其他方式不适用或似乎不再起作用.

这里的第二个第三个答案似乎很有用.正如所建议的,我补充道

<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
Run Code Online (Sandbox Code Playgroud)

到.project文件,当单独不起作用时,我也添加到项目文件中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.convertproject.test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
</manifest>
Run Code Online (Sandbox Code Playgroud)

target=android-7
android.library=true
Run Code Online (Sandbox Code Playgroud)

现在,尝试在Android Studio中导入我的项目(重启Android Studio后)仍会产生以下消息:

[带目录的文件名]是一个Eclipse项目,但不是Android Eclipse项目.请选择Android Eclipse项目的目录(例如,它将包含AndroidManifest.xml文件),然后重试.

当我已经在.project文件中包含AndroidManifest代码snipppet时,我不明白为什么会收到此消息.不幸的是,在Eclipse中发生同样的情况,选择文件 - >新建 - >项目 - > Android - >现有代码中的Android项目不起作用,因为它在文件夹中找不到任何Android项目.

是否还有其他行我需要包含在我的.project文件中,这个方法中是否有任何我缺少的步骤,或者它根本不再起作用?任何帮助赞赏.

java eclipse android adt

2
推荐指数
1
解决办法
3482
查看次数

使用JLabel的自定义字体

我正在尝试在我的JFrame中使用特殊字体,但我遇到了问题.我有一个像这样定义的JLabel:

private JLabel lab = new JLabel("Text");
Run Code Online (Sandbox Code Playgroud)

我有一个名为CUSTOMFONT-MEDIUM.TTF(TrueType字体)的文件,但在写完以下内容之后:

    try {
    lab.setFont(Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("/CUSTOMFONT-MEDIUM.TTF").openStream()));
    } catch(IOException ex){
    //exception handled here I suppose  
    } catch(FontFormatException ex2) {
    //same here
    }
Run Code Online (Sandbox Code Playgroud)

代码编译,一切正常,但"实验室"没有显示,所以没有文字.我想这是因为我从未指定字体大小应该是什么,但是我做的任何尝试都失败了.有人可以帮帮我吗?

java fonts swing jlabel

1
推荐指数
2
解决办法
6718
查看次数

计算所有有限Blurgs的无限列表

假设我们在Haskell中定义了以下数据类型:

data Blurg = Blub
           | Zarg
           | Parg Blurg Blurg
Run Code Online (Sandbox Code Playgroud)

这意味着Zarg,Parg Blub (Parg Zarg Zarg),Parg (Parg Blub Blub) (Parg Blub Blub)等,是所有实例Blurgs.

现在一个旧的考试问题如下:

定义一个函数,它将计算所有Blurgs的列表.

所以我尝试过:

allBlurg' :: [Blurg] -> [Blurg]
allBlurg' sofar = sofar ++ allBlurg' [Parg x y | x <- sofar, y <- sofar]

allBlurg :: [Blurg]
allBlurg = allBlurg' [Blub, Zarg]
Run Code Online (Sandbox Code Playgroud)

起初我认为这是一个解决方案,但后来我意识到并非所有可能的Blurgs都包含在结果列表中allBlurg.有人能写一个合适的解决方案吗

顺便说一句,我只想指出,问题所要求的并不是真正的功能,因为它不需要任何参数; 它应该被视为一个价值.其次,虽然问题没有明确说明,但我认为这应该是每个Blurg只在列表中出现一次的条件.另请注意,问题实际上应该只是询问用户zch在评论中提到的有限Blurgs.

haskell

1
推荐指数
1
解决办法
133
查看次数

哪些文件构成Java中的"程序"?

对于我大学的课程,我们应该编写三个排序程序,然后将它们存档到.tar文件中并发送给教师.我已经写了这些程序,现在我不确定是否应该存档.class文件,.java文件或两者(指令指定我应该发送"三个文件"),但也许它并不意味着很多,因为他们推荐你在python中编程).我真的不明白为什么有.java和.class文件,有人能解释一下吗?

java class

0
推荐指数
1
解决办法
119
查看次数

JFrame 中的渐变背景

我已经用谷歌搜索并阅读了很多内容,但没有找到适合我需要的答案,所以我会在这里问:

我想在我的 JFrame 中有一个渐变背景。目前背景是单色的。我的代码看起来像这样:

//imports

public class Game {

   //some other irrelevant instance variables

   JFrame frame = new JFrame("Game");

   public Game() {

       frame.getContentPane().setBackground(new Color(200,220,200));
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setLayout(null);
       frame.setPreferredSize(new Dimension(frameX,frameY)); //frameX and frameY are instance variables

       getMenu(); //method that adds a few JLabels to the JFrame and so on

   }
}
Run Code Online (Sandbox Code Playgroud)

我读过的方法适用于扩展 JPanel 或 JFrame 的类(然后使用 GradientPaint 或类似的东西),但正如您所看到的,我使用 JFrame 作为实例变量。有人可以帮我吗?

编辑: 图片:

在此输入图像描述

java swing gradient background jframe

0
推荐指数
1
解决办法
4837
查看次数

标签 统计

java ×5

swing ×3

adt ×1

android ×1

background ×1

class ×1

eclipse ×1

fonts ×1

gradient ×1

graphics ×1

haskell ×1

jframe ×1

jlabel ×1

jpanel ×1

mouseevent ×1