Java图形(画一条线)

艾哈迈德

我对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]);
    }
}

}

简而言之,我想创建一个函数来创建一条线,并将该线的位置作为参数。我希望该行位于按钮上方。我怎样才能做到这一点?提前致谢。

科佩格

我希望该行位于按钮上方。

考虑使用Glass窗格来执行自定义绘图,并覆盖其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

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

null顺便说一句,我也建议您不要使用布局-选择最适合您的布局的LayoutManager(请注意,您可以嵌套布局)。我也建议您改写paintComponent而不是paint(因为您发布的代码试图这样做)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章