我对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] 删除。
我来说两句