gpt4 book ai didi

java - JFrame窗口坐标错误

转载 作者:行者123 更新时间:2023-11-30 10:12:23 26 4
gpt4 key购买 nike

当在 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);
}

}

我得到以下内容

Example

正如我们所见,该行的左上角被遮住了。我该如何纠正这个问题?- 特别是,我如何计算选项卡下方最上面像素的像素坐标?- 更一般地说,是否可以首先显示没有选项卡的 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());
}
}

}

输出:

enter image description here

关于java - JFrame窗口坐标错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51900200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com