Java JLabel中的绘图
我在JFrame应用程序中绘图有问题。我有两个功能: 我对Java中的这种图形非常陌生,我想知道是否有人能帮助我。我需要在JLabel上添加名为areaImage的行。我尝试使用一些在这里找到的已完成代码,但没有一个对我有效。我的代码是否可用于某些bug?还是完全不好 请不要只是张贴一些代码链接,我没有足够的技能来理解它,然后改变它,使之适合我的应用程序 这一个只是创建窗口,添加组件:Java JLabel中的绘图,java,swing,drawing,Java,Swing,Drawing,我在JFrame应用程序中绘图有问题。我有两个功能: 我对Java中的这种图形非常陌生,我想知道是否有人能帮助我。我需要在JLabel上添加名为areaImage的行。我尝试使用一些在这里找到的已完成代码,但没有一个对我有效。我的代码是否可用于某些bug?还是完全不好 请不要只是张贴一些代码链接,我没有足够的技能来理解它,然后改变它,使之适合我的应用程序 这一个只是创建窗口,添加组件: public void game (int difficulty) { getContentPane(
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圆点纸,一些随机点被选中并通过一条线连接。玩家必须计算给定形状的面积。所以我需要画点和线,基本上这是一个游戏,我有一个厘米的点纸,一些随机点被选中,并通过一条线连接起来。玩家必须计算给定形状的面积。所以我需要画点和线