Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 我的抽绳赢了';行不通_Java_String_Object_Drawstring - Fatal编程技术网

Java 我的抽绳赢了';行不通

Java 我的抽绳赢了';行不通,java,string,object,drawstring,Java,String,Object,Drawstring,我对java有些陌生,已经编程了大约一年了,现在我正在做一个项目,让用户选择一个地图(例如worldmap)并通过单击地图将城市添加到地图中 当用户点击地图时,他/她输入一个名字,然后在这些坐标上绘制城市,这项工作很好。我的问题是,我也想把城市的名字画在城市的上方,但由于某种原因,我无法让它起作用。 这应该是一个简单的任务,但已经尝试了几个小时,它开始变得非常烦人,所以我希望其他人可以帮助我这个简单的查询 守则: public class Rita extends JComponent{

我对java有些陌生,已经编程了大约一年了,现在我正在做一个项目,让用户选择一个地图(例如worldmap)并通过单击地图将城市添加到地图中

当用户点击地图时,他/她输入一个名字,然后在这些坐标上绘制城市,这项工作很好。我的问题是,我也想把城市的名字画在城市的上方,但由于某种原因,我无法让它起作用。 这应该是一个简单的任务,但已经尝试了几个小时,它开始变得非常烦人,所以我希望其他人可以帮助我这个简单的查询

守则:

public class Rita extends JComponent{
    private boolean klickad=false;
    protected int xx=0;
    private int yy=0;
    public Rita(int x, int y){
        xx=x;
        yy=y;
        setBounds(x, y, 20, 20);
        setPreferredSize(new Dimension(20,20));
        setMaximumSize(new Dimension(20,20));
        setMinimumSize(new Dimension(20,20));
    }

protected void paintComponent(Graphics g){
    super.paintComponent(g);
        drawString(g, xx+5, yy);
        if(klickad==false)
            klickadVal(g, xx, yy);

        else if(klickad==true)
            oKlickadVal(g);
    }
public void drawString(Graphics g, int x, int y){
    setFont(new Font("Courier New", Font.PLAIN, 16));
    g.setColor(Color.BLACK);
    g.drawString("Test test test test test", x, y);
}

public void klickadVal(Graphics g, int x, int y){
    g.setColor(Color.RED);
    g.fillRect(0,0,getWidth(),getHeight());
}

public void oKlickadVal(Graphics g){
    g.setColor(Color.BLUE);
    g.fillRect(0, 0, getWidth(),getHeight());
提前谢谢
/Jimmy

这是因为您的图形坐标应该相对于组件定义。 您正在将组件的边界设置为
x,y,w,h
,并将文本绘制为相同的
x
y

如果
x>w
y>h
,则它将不可见

使用图形命令的相对坐标将代码更改为:

protected void paintComponent(Graphics g){
    super.paintComponent(g);
        drawString(g, 5, 10);
        if(klickad==false)
            klickadVal(g, 0, 0);

        else if(klickad==true)
            oKlickadVal(g);
}

请注意,由于边界的宽度和高度,绘图区域仅为20px*20px。

在绘制字符串后,您将调用klickadVal或oKlickadVal。这两种方法用一种颜色覆盖显示的字符串来填充整个组件。

当您说“无法使其工作”时,您是否遇到任何错误或类似的情况?它怎么不工作?正在调用该方法吗?字符串是否显示?只是一个提示:
if(klickad==false)。。。否则if(klickad==true).
最好是
if(klickad==false)。。。如果(!klickad)。。。否则…
-
klickad
只能是true或false:)不会收到任何错误消息,并且我的矩形绘制在地图上,但字符串不会显示。调用了drawString方法(使用println进行了检查),但是字符串没有在映射上绘制考虑到了这一点,所以尝试删除drawString并只调用drawString,但这不起作用,所以这不是问题所在。无论如何,谢谢你的努力。谢谢你,伙计!没有意识到当使用此方法时,我的字符串将被绘制在矩形内。假设我需要另一个只包含drawString方法的对象,它的x和y坐标加上几个像素,以便在矩形的顶部绘制。谢谢