JFrame窗口坐标错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFrame窗口坐标错误相关的知识,希望对你有一定的参考价值。
当在JFrame上绘制点时,可以自然地假设(0,0)对应于选项卡下方可用的左上角像素,并且(Max_x,Max_y)对应于帧中的右下角像素。但是,似乎(0,0)实际上隐藏在选项卡所在的区域中。例如,如果我编写以下代码在左上角和右下角之间绘制对角线,
import java.awt.Graphics;
import javax.swing.JFrame;
public class Test extends JFrame{
public Test() {
setSize(960, 960);
setTitle("Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
Test t = new Test();
}
public void paint(Graphics g) {
g.drawLine(0, 0, 960, 960);
}
}
我得到以下内容
正如我们所看到的,该行的左上角是模糊的。我该如何纠正这个? - 特别是,如何计算选项卡下方最上面像素的像素坐标? - 更一般地说,是否可以在没有选项卡的情况下显示JFrame,从而消除问题?
答案
可能是因为你直接在JFrame
上绘制,这是一个顶级窗口,我不认为它以可预测的方式支持自定义绘画,至少这种行为似乎很像你在问题中所描述的那样不稳定。
通常你会使用JPanel
并将它放在JFrame
中,如下所示:
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
public Main() {
setSize(960, 960);
setTitle("Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setContentPane(new JPanelTest());
}
public static void main(String[] args) {
Main t = new Main();
}
class JPanelTest extends JPanel {
public void paint(Graphics g) {
g.drawLine(0, 0, this.getWidth(), this.getHeight());
}
}
}
输出:
以上是关于JFrame窗口坐标错误的主要内容,如果未能解决你的问题,请参考以下文章