当前位置: 首页 > 面试题库 >

在JFrame中使用坐标平面

鲁博瀚
2023-03-14
问题内容

//我正在尝试学习如何在Java中绘制对象。我在此方面做得越来越好,但是一旦在屏幕上获得图像,就很难操作它。我输入的数字对形状的结果没有意义。至少对我来说他们没有。在代数中,如果在x轴上增加一个数字,它将向右移动;如果在y轴上增加一个数字,它将向右移动。那不是这里发生的事情。谁能向我解释这是如何工作的?我还是java的新手,所以解释越多,细节越好。我试图在整个暑假中每天花几个小时学习Java,有时会有些沮丧。任何帮助是极大的赞赏。


问题答案:

Co-ordinatesTOP LEFT SIDE屏幕的此处开始,随着的增加X,您将向前进RIGHT SIDE,而随着的增加Y,您将向前进DOWNWARDS。这是一个小的示例程序,您可以通过单击它的任意位置更好地理解它。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DrawingExample
{
    private int x;
    private int y;
    private String text;
    private DrawingBase canvas;

    private void displayGUI()
    {
        JFrame frame = new JFrame("Drawing Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        canvas = new DrawingBase();
        canvas.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent me)
            {
                text = "X : " + me.getX() + " Y : " + me.getY();
                x = me.getX();
                y = me.getY();
                canvas.setValues(text, x, y);
            }
        });

        frame.setContentPane(canvas);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new DrawingExample().displayGUI();
            }
        });
    }
}

class DrawingBase extends JPanel
{
    private String clickedAt = "";
    private int x = 0;
    private int y = 0;

    public void setValues(String text, int x, int y)
    {
        clickedAt = text;
        this.x = x;
        this.y = y;
        repaint();
    }

    public Dimension getPreferredSize()
    {
        return (new Dimension(500, 400));
    }

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawString(clickedAt, x, y);
    }
}


 类似资料:
  • 我使用的是平顶六边形网格(按照这里列出的手册http://www.redblobgames.com/grids/hexagons/)。 当然,在平顶的情况下,x坐标可以用作x像素坐标。因此,从立方体坐标计算X像素坐标相对容易。假设是十六进制的总宽度,是x、y、z坐标数组,则x像素坐标为: 我不知道如何计算y像素坐标。相邻HEX之间的高度应不足等于。但是如何基于立方体坐标计算偏移量呢?

  • 我试图写一个函数,它以笛卡尔坐标系中的x和y值作为输入,并输出极坐标和三角坐标形式。我希望输出包含指数和正弦/余弦,而不是实际值。例如,如果笛卡尔函数是z=1i,我希望函数输出z=sqrt(2)e^(ipi/4)和z=sqrt(2)(cos(pi/4)Isin(pi/4)。我该怎么做? 函数坐标(x, y) r=sqrt(x.^2 y.^2); θ=atan(y./x); Polarcoord=r

  • 本文向大家介绍使用js获取鼠标坐标相关面试题,主要包含被问及使用js获取鼠标坐标时的应答技巧和注意事项,需要的朋友参考一下

  • 我们体验一下Events类吧!为了使其尽量简单,我们使用Events类的getMousePos()获取鼠标光标的坐标,并在画布的左上角显示出来。getMousePos()方法返回相对于画布的坐标,它会考虑画布相对于页面的偏移,以及页面的滚动位置。 图6-1 画布坐标系 操作步骤 按照以下步骤,在每次鼠标移动时,获取画布上的鼠标坐标,并在画布的左上角显示出来: 1. 链接到Events类: <sc

  • 我的渲染方法目前看起来像这样: 我最近刚刚尝试使用VBO,在我直接发送顶点数据之前,一切工作正常,纹理映射正确。现在我用VBO改变了顶点数组,即使它有效,也没有应用纹理,我只能看到黑色的物体。 我的纹理可能有什么问题 为什么当我更改GLVertexAttribute指针(顶点,3,GL_FLOAT,GL_ FALSE,0,0)时;带glBindBuffer的行顺序(GL_ARRAY_BUFFER,

  • 问题内容: 斯威夫特新手。 我在执行一项琐碎的任务时遇到了麻烦。我要做的就是 按需 获取鼠标光标的x,y坐标。我宁可 不要 等到鼠标移动事件触发后再抓住指针的坐标。 将不胜感激! 问题答案: 您应该看看NSEvent方法mouseLocation 编辑/更新: Xcode 11•Swift 5.1 如果您希望在应用程序处于活动状态时监视任何窗口上的事件,则可以添加与mouseMoved掩码匹配的L