相关疑难解决方法(0)

在JFrame中绘制Graphics2D

我正在制作一个2D垂直射击游戏,其中一切都是编码(和工作)但图形.我之前没有使用过Graphics类,所以这对我来说都是新手.以下是我用于将所有内容绘制到JFrame的代码:

public void paintAll()
{
    Graphics h = new Graphics2D();
    for(Bullet j : GameState.getEnBullets()){
        h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
    for(Enemy j : GameState.getEnemies()){
        h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
    for(Bullet j : GameState.getPlayBullets()){
        h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
    this.paint(h);
}
Run Code Online (Sandbox Code Playgroud)

第一行"Graphics h = new Graphics2D();" 产生错误,因为Graphics2d是抽象的,但我不知道从哪里开始.

我需要代码来获取我拥有的所有图像并将它们绘制到JFrame中的点.我提醒你,我以前从未这样做过,所以请告诉我这是否是错误的做法.

java graphics swing jframe paintcomponent

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

摆动速度限制

我有一个很长的重绘操作,我想限速,即确保它最多每N毫秒调用一次.

我目前的解决方案有点令人不满意:我使用Timer持续时间较短的Swing ,restart()每当我收到一个事件时我都会这样做.这样可确保在N毫秒窗口内发生事件时不会触发重绘(即重绘将在事件发生并且N毫秒"安静"时间段过去后发生).

我想要的是确保在第一个事件后最多N毫秒调用重绘,并且重绘时间最多为N.任何想法?(没有记录调用start已启动的效果Timer).

java swing repaint rate-limiting

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

数字未显示在JFrame上

这是使数字显示的线程:

    class CoOrdCounter extends Thread{
    public void run(){
        try{
            while(true){
                    Thread.sleep(500);
                    printX = cow.x;
                    printY = cow.y;
            }
        }catch(Exception e){}
    }
}
//Of course I also have CoOrdCounter co = new CoOrdCounter; co.start();
Run Code Online (Sandbox Code Playgroud)

然后......
g.drawString("Co-ords: ("+printX+","+printY+")",50,100); 它总是显示(0,0),可能是因为int printX = 0, printY = 0;.这意味着变量根本没有改变......为什么?我应该如何做这项工作......?
[PLEASE]我知道我不应该使用paint(),但我是初学者 - 中级所以......
[编辑]现在MadProgrammer提到它,我确实得到了一个EventDispatchThread错误.
[编辑2]我理解使用Timer@MadProgrammer我如何获得cow.xcow.y使用您的代码片段?
[编辑3]如果您键入密钥p,KeyListener将启动Thread Slider,thread.的实例.
[UPDATE CLASS 2(真实的)]

import javax.swing.*;

import …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading paint jframe

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

Java Swing 2D动画

我正在使用eclipse平台和window builder pro.我已经创建了新项目(窗口构建器 - > swing designer - > application window); 现在我希望我的应用程序显示一些2D动画(例如移动的矩形),而不会闪烁屏幕.最好的方法是什么?现在我的代码中只有这些方法:MainWindow()构造函数,initialize()和main(String [] args)

我已经阅读了一些关于显示2D图形的信息,但它们都使用不同的组件和idk哪种方式是最好的,我并不总是理解它们使用的方法.

java animation swing 2d

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

在组件下面绘制图形

所以我目前正在创建一个登录屏幕,它具有使用Graphics对象和"游戏循环"制作的酷炫背景效果.当我添加一个JTextField虽然,它被看到在一切,而不是在上面.无论如何要在图形内部的所有组件下绘制JFrame

这是图形的图像:

在此输入图像描述

文本字段就在那里,就在绘制到框架表面的所有内容之下.我想以某种方式重新排序,以便它在组件下面绘制.

这是我目前的框架代码:

    frame = new JFrame("Login");
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.getContentPane().setPreferredSize(new Dimension(450, 200));
    frame.getContentPane().setBackground(Color.black);
    frame.setBackground(Color.black);
    frame.setLayout(new FlowLayout());

    JTextField user = new JTextField(20);
    user.setLocation(100, 200);
    user.setVisible(true);
    frame.add(user);

    frame.pack();
    frame.setVisible(true);

    frame.createBufferStrategy(2);
    buff = frame.getBufferStrategy();

    Painter painter = new Painter();
    frame.add(painter);
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

java animation swing background jtextfield

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

围绕角色旋转图像(JAVA)

是的,我知道你可以使用AffineTransformation,但我希望我的剑图像围绕我所制作的角色(图形中绘制的黑色块)旋转360度而不是仅仅一次旋转.基本上我想要像Terraria那样的旋转系统.我知道如何获得角色的x和y所以问题是:我如何围绕我定义的点旋转?我的代码设置如下

    f.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
        swordSwinging=true;
    }
});
Run Code Online (Sandbox Code Playgroud)

...

if(swordSwinging){
    //swinging code goes here
}

repaint();
Run Code Online (Sandbox Code Playgroud)

java image rotation

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