gpt4 book ai didi

Java图形(画线)

转载 作者:行者123 更新时间:2023-12-01 18:02:02 27 4
gpt4 key购买 nike

我对java Graphics不熟悉,我想在3个按钮上画一条线。我找到了一些绘制线条的方法,但没有一个将其绘制在按钮顶部。

这是我的 GUI 类

public class GUI extends JFrame{
JButton[] buttons;

GUI()
{
setSize(255, 390);
setLocation(0, 0);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
//TODO add the line
}
void drawButtons()
{
buttons=new JButton[9];
int x=5,y=80;
for(int i=0;i<buttons.length;i++)
{
buttons[i]=new JButton("");
buttons[i].setSize(70,70);
buttons[i].setLocation(x,y);
buttons[i].setFont(new Font("Arial", Font.PLAIN, 45));
buttons[i].setBorder(BorderFactory.createBevelBorder(1,Color.black,Color.black));
y+=(i%3==2)?75:0;
x=(i%3==2)?5:x+75;
add(buttons[i]);
}
}

}

很简单,我想创建一个函数来创建一条线,并获取该线的位置作为参数。我希望这条线位于按钮的顶部。我怎样才能做到这一点?提前致谢。

最佳答案

And I want the line to be on top of the buttons.

考虑使用Glass pane进行自定义绘图,重写其 paintComponent 方法以在 JFrame 之上进行绘图。例如:

public class CustomGlassPane extends JPanel{

public CustomGlassPane(){
setOpaque(false);
}

@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.drawLine(10, 100, 2000, 100);
}
}

然后您将设置 JFrame 的 Glass Pane

setGlassPane(new CustomGlassPane());
getGlassPane().setVisible(true);

顺便说一句,我还建议不要使用 null 布局 - 选择最适合您的布局的 LayoutManager(并注意您可以嵌套布局)。我还建议重写 paintComponent 而不是 paint (正如您发布的代码尝试做的那样)。

关于Java图形(画线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183301/

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