Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JLabel中的绘图_Java_Swing_Drawing - Fatal编程技术网

Java JLabel中的绘图

Java JLabel中的绘图,java,swing,drawing,Java,Swing,Drawing,我在JFrame应用程序中绘图有问题。我有两个功能: 我对Java中的这种图形非常陌生,我想知道是否有人能帮助我。我需要在JLabel上添加名为areaImage的行。我尝试使用一些在这里找到的已完成代码,但没有一个对我有效。我的代码是否可用于某些bug?还是完全不好 请不要只是张贴一些代码链接,我没有足够的技能来理解它,然后改变它,使之适合我的应用程序 这一个只是创建窗口,添加组件: public void game (int difficulty) { getContentPane(

我在JFrame应用程序中绘图有问题。我有两个功能:

我对Java中的这种图形非常陌生,我想知道是否有人能帮助我。我需要在JLabel上添加名为areaImage的行。我尝试使用一些在这里找到的已完成代码,但没有一个对我有效。我的代码是否可用于某些bug?还是完全不好

请不要只是张贴一些代码链接,我没有足够的技能来理解它,然后改变它,使之适合我的应用程序

这一个只是创建窗口,添加组件:

public void game (int difficulty)
{
    getContentPane().removeAll();

    areaImage = new JLabel ();
    areaImage.setBounds (50,100,650,500);
    areaImage.setForeground(Color.WHITE);   
    areaImage.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.BLACK));
    add(areaImage);

    paint (100,120,500,500, null);

    info = new JLabel ("  Write your answer into the text field");
    info.setBounds(730,180,250,50);
    info.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.BLACK));
    info.setFont(new Font ("Arial", Font.PLAIN, 15));
    areaImage.setForeground(Color.red);
    add(info);

    inputField = new JTextField("");
    inputField.setBounds(810, 240, 80, 50);
    add(inputField);

    checkAnswer = new JButton ("Check");
    checkAnswer.setBounds(750, 330, 200, 50);
    checkAnswer.setContentAreaFilled(false);
    checkAnswer.setOpaque(false);
    checkAnswer.addActionListener(this);
    checkAnswer.setFont (new Font("Arial",Font.PLAIN, 30));
    add(checkAnswer);

    next = new JButton ("Next");
    next.setBounds(750,440,200,50);
    next.setContentAreaFilled(false);
    next.setOpaque(false);
    next.addActionListener(this);
    next.setFont (new Font("Arial",Font.PLAIN, 30));
    add(next);

    end= new JButton ("Exit");
    end.setBounds (750,550,200,50);
    end.setFont(new Font("Arial", Font.PLAIN, 30));
    end.addActionListener(this);
    end.setOpaque(false);
    end.setContentAreaFilled(false);
    add(end);

    revalidate();
    repaint();
}
这是绘图功能:

private void paint (int x, int xx, int y, int yy, Graphics g)
{
   super.paint(g);
   Graphics2D g2 = (Graphics2D) g;
   g.drawLine(x,y,xx,yy);
   Line2D lin = new Line2D.Float(100, 100, 250, 260);
   g2.draw(lin);
}

请不要只是发布带有一些代码的链接,我没有足够的技能来理解它

这就是你学习的方式。你不能期望我们在每次你有小问题的时候调试你的代码并重写它。如果您不愿意通过使用工作示例来学习,那么我不确定我们可以如何帮助您

我需要在JLabel上添加行

然后需要覆盖JLabel的绘制代码。您不应该直接调用绘画方法,因为下次Swing确定需要重新绘制组件时,绘画将丢失

因此,从学习如何正确作画开始。上的Swing教程中有一个工作示例。第一个示例只是在面板上绘制一个字符串,但只要在标签上绘制一条线就足够了。它是添加到paintComponent()方法的一条语句


真正的问题是你为什么要在标签上画这条线?如果我们了解真正的需求,我相信有更好的解决方案。你不应该硬编码行的位置/大小,因为你不知道标签会有多大。

请不要只是发布带有一些代码的链接,我没有足够的技能理解它

这就是你学习的方式。你不能期望我们在每次你有小问题的时候调试你的代码并重写它。如果您不愿意通过使用工作示例来学习,那么我不确定我们可以如何帮助您

我需要在JLabel上添加行

然后需要覆盖JLabel的绘制代码。永远不要直接调用绘制方法,因为在Swing下次确定组件需要重新绘制时,绘制将丢失

因此,从学习如何正确作画开始。上的Swing教程中有一个工作示例。第一个示例只是在面板上绘制一个字符串,但只要在标签上绘制一条线就足够了。它是添加到paintComponent()方法的一条语句


真正的问题是你为什么要在标签上画这条线?如果我们了解真正的需求,我相信有更好的解决方案。您不应该硬编码行的位置/大小,因为您不知道标签会有多大。

“我在这里找到的代码”‘这里’是个大地方。请用链接缩小范围。更一般地说:1)为了更快地获得更好的帮助,发布一个or。2) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起用于。。你能发一封信吗?这将有助于确定您所面临的问题。在这个过程中,你也可以自己解决这个问题!。。3)
新字体(“Arial”,Font.PLAIN,15)
最好是
新字体(Font.SANS_SERIF,Font.PLAIN,15)
,因为Arial在OS X上不可用。他们希望在任何情况下都能看到Helvetica。使用“逻辑”字体名称将导致Windows上的Arial,OS X上的Helvetica,以及*nix上默认的sens serif字体。“我在这里找到的代码”“‘这里’是一个很大的地方。请用链接缩小范围。更一般地说:1)为了更快地获得更好的帮助,发布一个or。2) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起用于。。你能发一封信吗?这将有助于确定您所面临的问题。在这个过程中,你也可以自己解决这个问题!。。3)
新字体(“Arial”,Font.PLAIN,15)
最好是
新字体(Font.SANS_SERIF,Font.PLAIN,15)
,因为Arial在OS X上不可用。他们希望在任何情况下都能看到Helvetica。使用“逻辑”字体名称将导致Windows上的Arial,OS X上的Helvetica,以及*nix上默认的sens serif字体。好吧,基本上这是一个游戏,我有一张cm圆点纸,一些随机点被选中并通过一条线连接。玩家必须计算给定形状的面积。所以我需要画点和线,基本上这是一个游戏,我有一个厘米的点纸,一些随机点被选中,并通过一条线连接起来。玩家必须计算给定形状的面积。所以我需要画点和线