gpt4 book ai didi

java - 在java gui swift中的2个按钮之间画线,它有效但不准确

转载 作者:行者123 更新时间:2023-11-30 02:43:37 26 4
gpt4 key购买 nike

我有这个简单的代码:

class Success extends JFrame {

public JButton button1;
public JButton button2;

public Success() {
JPanel panel = new JPanel();
getContentPane().add(panel);
setSize(600, 800);

button1 = new JButton("press");
button2 = new JButton("this");
button1.setBounds(100, 200, 100, 100);
button2.setBounds(400, 500, 100, 100);

panel.add(button1);
panel.add(button2);
panel.setLayout(null);
}

public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawLine(button1.getX(), button1.getY(), button2.getX(), button2.getY());
}

public static void main(String []args) {
Success s = new Success();
s.setVisible(true);
}
}

它可以工作,但请查看此图像:

enter image description here

我想要按钮的准确位置。

我尝试了 getLocationOnScreen()getLocation() 但它们遇到了同样的问题。

最佳答案

首先,您永远不应该重写 JFramepaint 方法,而应该重写内容面板的 paintComponent 方法。

话虽这么说,SwingUtilities具有查找坐标的方法,给定源(您的情况下的按钮)和目标(您的情况下的框架) Component 对象:

public void paint(final Graphics g) {

super.paint(g);

Graphics2D g2 = (Graphics2D) g;

Point p1 = SwingUtilities.convertPoint(button1, 0, 0, this);
Point p2 = SwingUtilities.convertPoint(button2, 0, 0, this);

g2.drawLine(p1.x, p1.y, p2.x, p2.y);
}

请注意,您可能遇到了未考虑框架的标题栏/边框,从而导致垂直移位的问题。

关于java - 在java gui swift中的2个按钮之间画线,它有效但不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893481/

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