Java 未执行绘制操作,但系统已退出
我正在开发一个应用程序,它可以绘制长方体并用线连接它们。每条线都有角(点)。用户可以通过右键单击线条来添加点。然后点得到一个位置集 图表的绘制方法循环遍历所有点并检查它们是否为自定义点(简单;返回(位置!=-1)),当它们为自定义点时,必须在该位置绘制一个圆形图像 现在我真的撕掉了我的听力,因为它在调试模式下执行,但不画图!我放置了一个系统进行检查,这是正常执行的。但是如果我放置一个!在if语句前签名。我真的找不到问题 油漆方法:Java 未执行绘制操作,但系统已退出,java,if-statement,paint,Java,If Statement,Paint,我正在开发一个应用程序,它可以绘制长方体并用线连接它们。每条线都有角(点)。用户可以通过右键单击线条来添加点。然后点得到一个位置集 图表的绘制方法循环遍历所有点并检查它们是否为自定义点(简单;返回(位置!=-1)),当它们为自定义点时,必须在该位置绘制一个圆形图像 现在我真的撕掉了我的听力,因为它在调试模式下执行,但不画图!我放置了一个系统进行检查,这是正常执行的。但是如果我放置一个!在if语句前签名。我真的找不到问题 油漆方法: public void paint(Graphics2D g)
public void paint(Graphics2D g) {
g.setColor(Color.RED);//_lineColor);
g.setStroke(new BasicStroke(DEFAULT_LINE_SIZE));
for(Line2D line : _lines) {
g.draw(line);
}
if(_isHover) {
for(ConnectionDot dot : _connectionDots) {
if(dot.isUserDot()) {
System.out.println("YEAH!!!");
//TODO: dot hover?
g.drawImage(_icoConnectionNor.getImage(), dot.getX()-8, dot.getY()-8, null);
//g.drawString("What?", dot.getX(), dot.getY());
} else {
System.out.println("Hell No!");
g.drawString("What?", dot.getX(), dot.getY());
}
}
}
}
Dot类:
public class ConnectionDot {
//...
private int _userDotQueueLoc;
/**
* Create new dot.
*
* @param gridController reference to the grid controller.
* @param grid Grid position of the dot.
*/
public ConnectionDot(GridController gridController, Grid grid){
_gridController = gridController;
_gridPos = grid;
_userDotQueueLoc = -1;
}
/**
* Create new user dot.
*
* @param gridController reference to the grid controller.
* @param grid Grid position of the dot.
* @param userDotLocation Location of user dot.
*/
public ConnectionDot(GridController gridController, Grid grid, int userDotLocation){
this(gridController, grid);
_userDotQueueLoc = userDotLocation;
}
/**
* Returns true if the dot is custom.
*
* @return Flag.
*/
public boolean isUserDot(){
return (_userDotQueueLoc != -1);
}
}
控制台输出:
他妈的不!
他妈的不!
他妈的不!
他妈的不!
是 啊
他妈的不!
他妈的不!
他妈的不!
他妈的不!
是 啊
... 你明白了也许你需要强制重新粉刷屏幕?它可能确实读取了您的操作,但是却没有显示。我从来没有使用过“Graphics2D”,所以我不知道它的方法,但是你应该能够很容易地找到它。也许你的点的x/y值不正确 在(0,0)处绘制字符串不会显示该字符串,因为drawString希望该点位于底部/左侧,而不是顶部/左侧 另一方面,绘制图像时使用左上角,因此,减去8可能会将图像移出面板
但正如其他人所指出的,唯一确定的方法是发布SSCCE。为了更快地获得更好的帮助,请发布SSCCE()。它不能在你认为它所在的地方拖拉。就像安德鲁说的,你需要发布一个SSCCE。好的。。只是看了链接,真的不知道该怎么办。但是我发现了问题,这是不正确的。在控制台上可以看到println,因此调用了paint方法。问题在别处。谢谢!事实并非如此,但它让我想到了圆点的位置。点的位置是网格,我在addUserDot方法中犯了一个错误,该方法添加了x和y点,而不是网格位置。。这是30202393号位置的图纸。