Tag: paintcomponent

我想让球逐渐移动

当你按下其中一个方向键时,我试图让球逐渐移动,现在它只是传送。 我想要它,以便你可以看到它移动。 基于这个例子 ,我使用的是键绑定,并且有一个名为delta的变量会导致球移动50个像素,但就像我说的那样,当你按下箭头键时,球只出现50个像素,我想要它就像你要踢球一样,你可以看到它从a点到b点。 转到我觉得问题所在的第89行。 package game; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.KeyStroke; /** * @see https://stackoverflow.com/questions/6991648 * @see https://stackoverflow.com/questions/6887296 * @see https://stackoverflow.com/questions/5797965 */ public […]

java applet中的paint()无故被调用两次

是否有一个共同的原因可以在不打算的情况下调用paint()方法两次。 我有以下代码: public void paint(Graphics g) { //Graphics2D gg; //gg=(Graphics2D) g; drawMatrix(g); } private void drawMatrix(Graphics g) { int side = 40; hex hexagon=new hex(); for(int i = 0; i<9; i++) for(int k = 0; k<9; k++){ g.setColor(Color.lightGray); g.fill3DRect(i*side,k*side, side, side, true); if (matrix[i][k]!=null){System.out.println("i is "+i+" k is "+k); g.setColor(Color.black);hexagon.DrawHexfromMatrix(g, i, k, Color.black);} } } […]

为什么不直接在JFrame中绘制

任何人都可以解释我为什么不应该使用paint方法直接在JFrame窗口内绘制,我应该使用paintComponent方法与JFrame内的JFrame ? 提前致谢。

使用Java中的算法更改图形的角度/位置

您好我很好奇如何解决这个问题:我用Java创建了一个带有fillArc,drawArc方法的pacman,我现在屏幕上有一个pacman家伙,无论方向如何,总是向右看……我的问题是..有没有办法逐个改变对象或在Java中水平翻转它? 我试图使用AffineTransform,但我没有得到我想要的文档…我应该如何使用switch语句实现这一点? 我试图做以下事情,但我被困在这部分,因为我不知道如何继续。 DrawPacMan pacman = new DrawPacMan(); DrawPacMan ghost1 = new DrawPacMan(); DrawPacMan ghost2 = new DrawPacMan(); AffineTransform pac = new AffineTransform(); public void setPacManView(int waarde) { // set the view of pacman switch (waarde) { case 0 : // here one view of pacman break; case 1 : // here one view of […]

在java中切换imageIcon?

我有许多在窗口中移动的平面(线程),我想根据平面的方向切换ImageIcon。 例如:如果一个平面向右移动,则该平面的imageIcon是正确的,然后平面向左移动,交换该平面的imageIcon。 我怎么能在paintComponent方法中做到这一点? 对不起,我的英语不好。

paintComponent在绘图之上绘制其他组件

我正在尝试构建一个简单的绘图工具。 mouseDrag事件创建一个新的椭圆并使我的JPanel repaint() 。 这到目前为止工作正常。 但是,如果我在第一次触发mouseDrag事件之前按下任何按钮(或任何其他UI组件),则该按钮将绘制在我面板的左上角。 我已将代码隔离到此测试应用程序中: import java.awt.BasicStroke; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Test extends JFrame { public Test() { final JPanel paintPanel = new JPanel(){ @Override protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D)g; g2d.setPaintMode(); g2d.setStroke(new BasicStroke(1)); […]

为什么在Graphics对象上调用dispose()会导致JPanel不呈现任何组件

在得知在使用后应该在Graphics / Graphics2D对象上调用dispose()之后,我开始改变我的游戏以包含它。 当我在paintComponent(Graphics g)重写paintComponent(Graphics g)中添加g2d.dispose()时,我添加的组件( JLabel类的扩展)没有呈现我仍然能够点击它们等但是它们不会被绘制 。 我用普通的JLabel和JButton测试了相同的效果(虽然当鼠标hover在它上面时会渲染JButton )。 所以我的问题是为什么会发生这种情况? 这是一个SSCCE来certificate: 取消注释对MainMenuPanel类的paintComponent的dispose()调用: import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.RenderingHints; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; […]

Java创建一条有向线并使其移动

我想制作一条直线并让它移动。 我可以制作一条有向直线并移动直线,但是当我移动直线时箭头会移位 这是我的绘画方法 Line2D.Double line = new Line2D.Double(startX, startY, endX, endY); g2d.draw(line); tx.setToIdentity(); double angle = Math.atan2(line.y2 – line.y1, line.x2 – line.x1); tx.translate(line.x2, line.y2); tx.rotate((angle – Math.PI / 2d)); Graphics2D gClone = (Graphics2D) g2d.create(); gClone.setTransform(tx); Polygon arrowHead = new Polygon(); arrowHead.addPoint(0, 15); arrowHead.addPoint(-15, -15); arrowHead.addPoint(15, -15); Area area = new Arear(arrowHead ); Area lineArea = […]

Java:mouseDragged并在图形界面中移动

新手程序员在这里。 我正在制作一个程序,用于在笛卡尔坐标系中呈现用户输入的方程。 目前我遇到一些让用户在坐标中自由移动视图的问题。 目前使用mouseDragged,用户可以稍微拖动视图,但是一旦用户释放鼠标并尝试再次移动视图,原点就会快速回到鼠标光标的当前位置。 让用户自由移动的最佳方法是什么? 提前致谢! 这是绘图区域的代码。 import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import javax.swing.JPanel; public class DrawingArea extends JPanel implements MouseMotionListener { private final int x_panel = 350; // width of the panel private final int y_panel = 400; // […]

paint()和paintcomponent()之间的区别?

我已经尝试了这方面的教程,但我仍然不太明白。 基本上我的问题是哪种方法更好,为什么? 我应该使用paint或paintComponent吗? 请尽量保持答案简单,谢谢。