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