Tag: awt

如何使用java awt libaray绘制心脏?

如何使用java awt libaray绘制心脏? 我正在使用Java AWT Libaray,我需要为我的游戏画上一颗心。 我怎么能用AWT做到这一点? 这就是我的想法:可能是使用g.fillArc() ? 但是如果我在顶部制作两条曲线而不是如何在按钮上制作三角形? 那会是g.fillPolygon()吗? g.fillArc(x, y, 20,20, 60, 60); //so this will be left curve g.fillArc(x+20, y, 20,20, 60, 60); //so right curve? //button triangle? 我想知道是否有任何一个是awt的经历,并可以告诉我如何做到这一点?

如何在java中绘制自定义圆角矩形?

我知道如何绘制圆角矩形,但我想分别为每个角定义圆度,并绘制如下图所示的内容:

将JScrollPane的可见区域移动到特定位置

我试图使用java模拟调试光标的移动。 我有问题将JScrollPane的可视区域放到正确的位置。 这是我想要拍摄的照片: 我只想滚动我想跳的线是不可见的。 计算是否有帮助可以通过使用CodeDrowingPanel.NUMBER_OF_LINES和CodeDrowingPanel.FONT_SIZE完成,使用这些常量在面板上绘制线条。 如果我必须跳,我必须跳的线应该在底部。 我必须记住,可见区域取决于屏幕分辨率。 应用程序最大化,无法resize。 编辑: public void setCursorToLine(int line, JScrollPane codeArea) { if(line*CodeDrowingPanel.FONT_SIZE > this.getHeight()+43) this.cursorPosition = this.getHeight()+43; else this.cursorPosition = line * CodeDrowingPanel.FONT_SIZE; JViewport viewPort = (JViewport) SwingUtilities.getAncestorOfClass(JViewport.class, codeArea); if (viewPort != null) { Rectangle view = viewPort.getViewRect(); view.y += line – previousLine; codeArea.scrollRectToVisible(view); } this.repaint(); } 这就是我现在尝试修改的方法。 但它不起作用。 我尝试从第一条评论中跟随你的第二个例子。 […]

如何禁用java.awt.Graphics.fillRect(int x,int y,int width,int height)的效果?

这是原始图像: 我使用java.awt.Graphics.fillRect(int x,int y,int width,int height)在图像上添加彩色矩形。 Graphics imageGraphics = image.createGraphics(); Color color = new Color(0,0,0,100); imageGraphics.setColor(color); imageGraphics.fillRect(0, 0, 800, 600); 所以图像已被反转,看起来像这样: 之后,我想部分清除黑色透明矩形并显示原始图像。 imageGraphics.clearRect(100,100,100,100); 但效果是这样的: 我的要求是: 我想知道为什么它不起作用,有没有其他方法来实现它?

使用“setlayout(null)”时,窗口小部件表现得很奇怪

我在我的代码中进行以下调用: … setLayout(null); … 我正在尝试通过指定x和y坐标来放置按钮和文本字段。 我运行程序(使用Eclipse或BlueJ)时的问题是我需要在面板上运行到按钮和文本字段的位置,以便分别查看按钮和文本字段。 当我找到文本字段时,它很小。 只有当我开始写作时才会假定我指定的大小。 有谁知道如何解决它?

动画GIF导致SplashScreen为空

我知道这可能接近这个post的重复: Splashscreen中的动画GIF 但是,因为它似乎没有答案,我无法评论它或任何我很抱歉重新发布这个,但如果有人能给我一个答案,那将是很棒的。 我正在制作游戏,这个游戏需要花费很多时间才能开始。 因此,我想在加载屏幕期间给用户反馈,以便他知道应用程序没有崩溃。 这就是我使用java 7中的SplashScreen API的原因。 在eclipse中,当我在VM Arguments中使用以下配置运行我的应用程序时, SplashScreen.getSplashScreen()返回null 。 -splash:src/aapplication/Splash.gif 但是当我使用这个配置时,它工作正常(我必须在同一个包中的文件,一个是Splash.png和另一个Splash.gif ): -splash:src/aapplication/Splash.png 在jar文件中(在MANIFEST.MF ),这不起作用: SplashScreen-Image: aapplication/Splash.gif 虽然这样做: SplashScreen-Image: aapplication/Splash.png 我的GIF大小约为1Mb,而PNG大约为50kb。 任何人都可以向我解释为什么在PNG的情况下甚至无法加载GIF(我知道它不是路径,因为它们有相同的)? 我看到的每个地方都说它应该和PNG一样好用。 谢谢你的帮助!

java swing如何从不同的操作系统中抽取屏幕?

我知道Swing使用Java2d扩展AWT在屏幕上绘制但是,swing使用什么样的低级工具包来渲染? 例如GTK还是QT?

关于EDT(Java)

我已经在互联网上阅读了一些关于什么时候应该在EDT中运行的文章,以及什么时候不应该。 但是我仍然不确定我理解,所以我想问一些关于这个的问题: 在EDT 内默认运行哪些代码? 在EDT 之外默认运行哪些代码? 我什么时候应该使用InvokeLater(),以便默认情况下在EDT之外运行,将在其中运行? 什么时候应该阻止一段代码在EDT中运行(默认情况下),通过创建一个新线程并将该代码放入其中? 谢谢

如何消除keyPress的延迟?

所以我已经看到了一些关于这个的线程,我需要一些关于如何具体修复它的帮助。 当您按住某个键时,Java将读取第一个按键,然后会有一个小的延迟,然后它将连续读取按键,直到您释放该键。 public void keyPressed(KeyEvent key) { int code = key.getKeyCode(); if (code == KeyEvent.VK_DOWN) { //Do stuff } if (code == KeyEvent.VK_LEFT) { //Do stuff } if (code == KeyEvent.VK_RIGHT) { //Do stuff } if (code == KeyEvent.VK_UP) { //Do stuff } } 那是我目前的代码。 我听说要解决这个问题,你可以创建一个快速检查按键的计时器,但我不确定该怎么做。 会在这里感谢一些帮助,或者是否有更好的解决方案。

即使在持有密钥时,也只在Java中创建一个KeyEvent

我需要知道是否有可能只在按下一个键时才发生一次动作,即使该按键被按下一段时间,如果有可能,怎么办? 这是我现在的代码: if(e.getKeyCode() == KeyEvent.VK_A) { attack = true; moveX = -5; draw(moveX, moveY); players.get(username).setImageIcon(“attack-left”); } 这是在keyPressed方法中,并且在keyReleased中我将moveX设置为0.因此,如果按下A,则图像应该向左5个单位并停止,无论A是否仍被按下或已经被按下释放。 但这不起作用,它只是继续向左移动。 我尝试使用keyTyped但它没有用。 在此先感谢,如果需要,我可以提供更多代码。