Tag: paintcomponent

如何在JPanel上绘制图像并在其中添加组件

我的应用程序是一个简单的Brick Breaker游戏。 为了绘制应用程序的视觉效果,我正在使用paintComponent方法。 该应用程序还有几个使用以下代码添加的按钮: levelMenu = new JPanel() { @Override public void paintComponent(Graphics g) { super.paintComponent(g); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); double scale = screenSize.getHeight()/1080; Graphics2D g2d = (Graphics2D) g; g2d.scale(scale, scale); g2d.drawImage(background, 0, 0, null); } }; levelMenu.setLayout(new FlowLayout()); JPanel subPanel = new JPanel(new GridLayout(20, 2, 10, 10)); subPanel.setBackground(Constants.CLEAR); subPanel.add(new JLabel()); subPanel.add(new JLabel()); for (JButton […]

Java – paintComponent中的MouseListener Action事件

这里我有一个代码,使用paintComponent在mouseClicked位置绘制一个矩形。我可以得到输出消息,但任何与图形和.draw()相关的东西都不会起作用。 码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public final class testclass extends JFrame { static JPanel p; Timer t; int x = 1; int y = 1; int xspeed = 1; int yspeed = 1; public testclass() { initComponents(); this.setBounds(100, 300, 500, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); t.start(); this.add(p); } public void initComponents() { final ActionListener action […]

保持绘制图形 – 删除super.paintComponent

我有一个名为Foo的类,它扩展了一个名为Bar的类,它扩展了JPanel并实现了ActionListener。 当我选择Circle并单击绘制按钮时,我绘制一个圆,当我按下矩形并单击绘制时,它会删除以前的形状并绘制一个矩形。 但是,我想在JPanel上保留所有形状,直到我选择单击“删除”按钮。 所以我删除了super.paintComponent(g)并且它可以工作,但它也会导致类Bar的按钮以一种小故障的方式重新出现。 如何再次停止绘画按钮? 我想不要扩展Bar并让Foo扩展JPanel。 public class Bar extends JPanel implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == “Draw”) { this.requestDraw = true; repaint(); } if (e.getActionCommand() == “Circle”) { requestRectangle = false; requestTriangle = false; requestCircle = true; } if (e.getActionCommand() == “Rectangle”) { requestCircle = false; requestTriangle = false; […]

JComponent大小问题

我有一个JComponent子类,我用它来绘制我的屏幕上的形状。 在构造函数中,我试图将ballX和ballY设置为JComponent的X和Y大小值的一半,我认为我做错了。 我现在已经看了很多,但找不到补救措施。 代码如下。 请记住,这是我第一次真正的Swing / Graphics2D冒险。 public class PongCanvas extends JComponent { //Vars to hold XY values and Dimension values. private int batXDim, batYDim; private int b1X, b1Y; private int b2X, b2Y; private int ballRad, ballX, ballY; public PongCanvas() {//Instantiate vars. batXDim = 20; batYDim = 100; b1X = 0; b1Y = 0; b2X […]

为什么我的jFrame只在我调整窗口大小后才更新?

我知道当你添加/删除一个组件时,你需要revalidate()然后repaint() 。 但是,我正在改变多边形的状态。 最初,显示图像,但是当我按下左右键时,图像不会移动。 如果我移动窗口,gui会更新。 我按键时为什么不更新? public class Terminos { private LeftTermin ter; private String[] commands = { “UP”, “DOWN”, “RIGHT”, “LEFT” }; public Terminos() { initComp(); } public void initComp() { JFrame jFrame = new JFrame(); jFrame.setSize(500, 500); Component pane = new myPanel(); jFrame.add(pane); ter = new LeftTermin(200, 200); jFrame.addKeyListener(new KeyListener() { public void […]

在Swing中绘制组件顶部?

我有一个JPanel添加到JViewport ,面板上添加了几个其他面板。 我正在尝试实现拖动选择,您可以通过拖动鼠标选择多个组件。 我面临的唯一问题是选择矩形被添加到主JPanel的组件后面。 我怎样才能在它们上面画画? 我的结构如下: JFrame – > ContentPane – > JLayeredPane – > JScrollPane – > JPanel – > JPanel [] 。 大学任务设计草案: 如您所见,矩形位于其他面板后面。

延迟在java图形中不起作用

这是通过Bresenham算法在计算位置上绘制点的代码: public void drawBresenhamPoints(Graphics2D g2, List bresenham) throws InterruptedException { Graphics2D g = (Graphics2D) g2; if(bresenham == null) return; g.setColor(Color.DARK_GRAY); for(int i = 0; i < bresenham.size(); i = i+20) { int x = bresenham.get(i).x – pointWidth1/2; int y = bresenham.get(i).y – pointWidth1/2; int ovalW = pointWidth1; int ovalH = pointWidth1; g.fillOval(x, y, ovalW, ovalH); […]

如何创建一个带有两个图像的JPanel,其中鼠标hover时只显示下面一部分图像?

我正在尝试创建一个按钮面板,其中单击的按钮变为“不同颜色”; 即显示背景图像。 ps我只需要这种方法(有2张图片),而不是其他任何东西。 谢谢 ! 例如: public class TestPane extends JPanel { private BufferedImage imgUnclicked; private BufferedImage imgClicked; private Point mousePoint; public TestPane() { try { imgUnclicked = ImageIO.read(new File(“C:\\Users\\Me\\Desktop\\tmp\\Uncolored.png”)); imgClicked = ImageIO.read(new File(“C:\\Users\\Me\\Desktop\\tmp\\Colored.png”)); } catch (IOException ex) { Logger.getLogger(Spotlight.class.getName()).log(Level.SEVERE, null, ex); } addMouseMotionListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { mousePoint = e.getPoint(); […]

在java中绘制形状对象(可拖动,可resize并可以旋转)

我正在尝试绘制可用于创建图片的形状(三角形,矩形,正方形和圆形)。 用户应该能够在canvas上放置一个形状并将其拖动或者甚至将其放大以创建所需的图片。 我尝试覆盖paintComponent()来实现这一点但是要意识到Jpanels的形状仍然是一个正方形所以当你有一个圆圈时你仍然可以拖动它,即使你不一定要触摸它,因为它在一个正方形内并且还有难以绘制三角形 你会建议哪些图书馆?

在指定点周围旋转Java 2D图形

我正在尝试编写一个程序,它将绘制围绕中心点旋转的几个形状。 结果应该像Spirograph。 我正在尝试使用矩形测试它,但我只能让其中两个出现在窗口中。 其中一个应该是它应该在的位置,但是在第一次旋转之后,它将另一个方向向上抛出窗口的左上角。 它应该围绕中心点旋转和绘制。 这是我的一部分代码。 import java.awt.*; import java.awt.geom.Ellipse2D; import javax.swing.JPanel; public class Shapes extends JPanel { private double angle; private int type; private int radius; private int repeats; public Shapes(int t, int r, int z) { type = t; radius = r; repeats = z; angle = 360 / repeats; } public void […]