我有一个非常简单的问题。我正在学习Java,并被分配画一辆汽车。我在一个扩展JPanel的类中完成了这一切,并在paintComponent()中完成了绘图。我意识到这是糟糕的面向对象编程,并决定尝试对某些部分进行子类化以纠正这种情况。我尝试创建一个画轮子的类,但没有成功。本质上,我希望能够做到这一点:MainClassextendsJPanelpaintComponent{WheelleftWheel=newWheel(0,50,100);this.add(leftWheel);}这应该在JPanel中的点(0,50)处绘制一个轮子,其直径为100。但是,我不确定我应该如何控制JPa
我正在尝试创建一些带有图像和提示的更好看的JTextFields。为此,我制作了一个重写paintComponent方法的装饰器。我使用装饰器的原因是我想将它应用于其他类型的JTextField,例如JPasswordField。这是我到目前为止所做的;在左边的表单中看到的问题是,即使我使用了JPasswordField,paintComponent似乎忽略了我假设的密码paintComponent,它可能会执行密码屏蔽符号。所以问题是,如何避免重复JTextFields和JPasswordFields的代码,但仍然具有不同的功能,例如密码屏蔽。这是装饰器代码;publicclassJ
我意识到大多数Java代码都覆盖了paint或paintComponent,它们中的大多数在改变图形对象的状态后不会恢复图形对象的旧状态。比如setStroke,setRenderingHint...我想知道在从方法返回之前恢复图形对象的旧状态是否是一个好习惯。例如publicvoidpaintComponent(Graphicsg){super.paintComponet(g);StrokeoldStroke=g.getStroke();g.setStroke(newStroke);//Dodrawingoperation.g.setStroke(oldStroke);}这是一个好的
您好,我正在尝试提高java2D方面的知识,首先我正在处理绘制多边形。但是,我看不到框架上的多边形。我阅读了一些教程和示例,但正如我所说,我遇到了问题。这是绘制多边形的示例代码;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Polygon;importjavax.swing.JFrame;publicclassjRiskextendsJFrame{privateJFramemainMap;privatePolygonpoly;publicjRisk(){initComponents();}privatevoidi
如何在没有类(扩展JFrame)的情况下绘制对象?我找到了getGraphics方法,但它没有绘制对象。importjavax.swing.*;importjava.awt.*;publicclassMain{publicstaticvoidmain(String[]args){JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);frame.setSize(600,400);JPanelpanel=newJPanel();frame.add
我正在用Java制作游戏,我想模拟正在倾盆大雨的云。下雨时云应该向右移动。移动云没有问题。这是我正在挣扎的雨。我想做的是用一个计时器来绘制一个矩形,这应该看起来像云内部随机x值下的雨。然后每100毫秒将1添加到drop的y值。但我不想为每个雨滴创建100个不同的矩形、x变量和y变量。知道如何实现吗?建议表示赞赏!这是一个2d游戏..抱歉。 最佳答案 一种方法是考虑剧院的字幕。您可以使用一系列灯泡,通过依次点亮和熄灭它们,您可以模拟线性运动。以同样的方式,与其创建雨滴并为其移动设置动画,不如创建多个不可见的雨滴并按顺序显示和隐藏它们以
我使用Java的Swing创建了一个GUI。我现在必须将一个sample.jpeg图像设置为我放置组件的框架的背景。如何做到这一点? 最佳答案 JPanel中没有“背景图像”的概念,因此必须编写自己的方法来实现这样的功能。实现此目的的一种方法是覆盖paintComponent每次刷新JPanel时绘制背景图像的方法。例如,一个子类是JPanel,并添加一个字段来保存背景图像,并重写paintComponent方法:publicclassJPanelWithBackgroundextendsJPanel{privateImagebac
根据最初的问题(下方),我现在悬赏以下内容:基于AlphaComposite的圆角解决方案。请使用JPanel进行演示。角落必须完全透明。必须能支持JPG画图,但还是有圆角不得使用setClip(或任何剪辑)必须有不错的表现希望有人能快速掌握它,这看起来很容易。如果有一个很好解释的原因说明为什么永远无法做到这一点,并且其他人同意,我也会奖励赏金。这是我所想的示例图像(但使用AlphaComposite)原始问题我一直在尝试找出一种使用合成来制作圆角的方法,非常类似于HowtomakearoundedcornerimageinJava。或http://weblogs.java.net/b
我从this得到了一些有趣的想法和批评,this和this发布(有关GUI的代码,请参阅上一篇文章)。尽管如此,我仍然对某些事情感到困惑。主要是,显示用户介绍图形的成本最低的方法是什么?更具体地说,我通过在MouseDragged()方法中创建此类的对象,使用了JPanel类中的paintComponent()方法连同paintComponent(getGraphics())方法(AuxClass2和AuxClass1相应地)。显然,使用getGraphics()和paintComponent()而不是repaint()是个坏主意,我怀疑与内存有关利用。每次用户拖动鼠标时调用AuxCl
我有一个带有网格布局的JPanel。在网格的“单元格”中,我可以放置不同的元素(例如JButtons)。没有问题。但现在我想在一些单元格中放置一个实心圆圈。我还想将ActionListener与这些圈子联系起来。更详细地说,如果我单击圆圈,它会从当前单元格中消失并出现在另一个单元格中。我怎样才能用Java做到这一点?我正在使用Swing。 最佳答案 publicvoidpaintComponent(Graphicsg){super.paintComponent(g);Graphics2Dg2d=(Graphics2D)g;//Ass