关于空指针异常····求解决··在线等

问题描述

publicUI(){setTitle("马周游问题");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(0,0,490,410);contentPane=newJPanel(newGridLayout());contentPane.setBorder(newEmptyBorder(5,5,5,5));setContentPane(contentPane);contentPane.setBackground(Color.WHITE);contentPane.setBounds(0,0,490,410);contentPane.setVisible(true);width=contentPane.getWidth();height=contentPane.getHeight();dLine=newDrawLine();dLine.draw(contentPane.getGraphics(),width,height);}publicvoiddraw(Graphicsg,intwidth,intheight){g.drawRect(10,10,width,height);//为什么这句说空指针异常啊?Graphics不是通过已经实例化了么?。}

另外我想问·在Jpanel上画图是怎样画的·用什么类什么函数··像drawLine()画完线怎么显示在面板上啊·是调用paint()还是repaint()还是直接通过getGraphics()返回到面板上的?比较乱不是很懂,麻烦大神解释下,帮助理清思路。。

解决方案

本帖最后由 q358543781 于 2013-12-23 15:40:05 编辑
解决方案二:
瞎蒙一下:在所有组件还没画出时,是不能获得Graphics的,只会返回空.只有在JFrame全部显示后才能get到Graphics.
解决方案三:
用paint(Graphicsg){draw...}
解决方案四:
JPanel不是有voidpaintComponent(Graphicsg)方法么。这是我以前弄的一个绘图JPanelclassMyPanelextendsJPanel{publicvoidpaintComponent(Graphicsg){super.paintComponent(g);Graphics2Dgps2D=(Graphics2D)g;//图形颜色gps2D.setPaint(Color.BLACK);//背景色gps2D.setBackground(Color.BLUE);//好像没成功//绘制矩形Rectangle2Dr2d=newRectangle2D.Double(leftX,topY,width,height);gps2D.draw(r2d);//绘制对角线Line2Dl2d=newLine2D.Double(leftX,topY,leftX+width,topY+height);gps2D.draw(l2d);//绘制椭圆Ellipse2De2d=newEllipse2D.Double(leftX,topY,width,height);gps2D.draw(e2d);//绘制圆doubleradius=Point2D.distance(leftX,topY,leftX+width,topY+height)/2;doublecentX=r2d.getCenterX();doublecentY=r2d.getCenterY();Ellipse2Dcyc=newEllipse2D.Double();cyc.setFrameFromCenter(centX,centY,centX+radius,centY+radius);gps2D.setPaint(Color.LIGHT_GRAY);gps2D.draw(cyc);//图形填充gps2D.setPaint(Color.LIGHT_GRAY);gps2D.fill(cyc);gps2D.setPaint(Color.BLACK);gps2D.fill(r2d);gps2D.setPaint(Color.GRAY);gps2D.fill(e2d);//设置字体FonttempF=newFont("SansSerif",Font.BOLD,24);gps2D.setFont(tempF);Stringmessage="ShapeWorld";FontRenderContextcont=gps2D.getFontRenderContext();Rectangle2Drect=tempF.getStringBounds(message,cont);//高度、宽度和上坡度doublesHeight=rect.getHeight();doublesWidth=rect.getWidth();doubleascent=-rect.getY();LineMetricslms=tempF.getLineMetrics(message,cont);//下坡度和行间距floatdescent=lms.getDescent();floatlead=lms.getLeading();gps2D.drawString("Shape,World",225,50);Rectangle2DrS2d=newRectangle2D.Double(225,50-ascent,sWidth,sHeight);gps2D.draw(rS2d);Line2DlS2d=newLine2D.Double(225,50,225+sWidth,50);gps2D.draw(lS2d);Line2DlS2dd=newLine2D.Double(225,50+descent,225+sWidth,50+descent);gps2D.draw(lS2dd);}publicstaticfinaldoubleleftX=200;publicstaticfinaldoubletopY=150;publicstaticfinaldoublewidth=200;publicstaticfinaldoubleheight=100;}

时间: 2024-09-27 18:16:54

关于空指针异常····求解决··在线等的相关文章

android-网上的方法都试过了,软件也重装了,Android studio 报错,求解决,在线等..

问题描述 网上的方法都试过了,软件也重装了,Android studio 报错,求解决,在线等.. Error:Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For example, an unrecognized jvm option is used. Please refer to the user guide chapter

java-Android自定义view,空指针异常求解决

问题描述 Android自定义view,空指针异常求解决 package com.drawview.drawview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { @Override protected void

android获取Dialog中edittext内容时空指针异常求解决

问题描述 android获取Dialog中edittext内容时空指针异常求解决 import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widge

mysql-Parameter index out of range 好心人求解决在线等 急

问题描述 Parameter index out of range 好心人求解决在线等 急 代码如下 求解哪里错误 package com.pact.mobilestore; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import jav

android-Android获取Dialog中的edittext内容空指针异常求解决

问题描述 Android获取Dialog中的edittext内容空指针异常求解决 import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widge

jdbc-java不能连接数据库的问题,求解决,【在线等】

问题描述 java不能连接数据库的问题,求解决,[在线等] 为什么报错? 求大神教教. 解决方案 classpath和jar包是不一样的.你要把mysql的jar包放到项目的lib目录下面.然后在加入classpath 解决方案二: classpath有拼写错误,set | find "mysql" 看看你的jar包加载进去没有. 解决方案三: 你的变量名那里是应该是classpath吧 你少打了字母 解决方案四: 把Exception异常打印出来,不要打印"YOU CUO&

wsdl-关于webservice 接口对接 求大神解决 在线等

问题描述 关于webservice 接口对接 求大神解决 在线等 最近正在调试接口 关于移动.联通SI应用的,对接文档这边 我用的axis2 插件直接生成wsdl 发布webservice 调用 都是OK. 但是在与联通对接的时候 出现了问题. 告知是调用soap错误. 这个错误的原因是根据wsdl调用接口的时候产生了错误. 联通和移动的webservice规范都是按照华为来的. 所以我想知道 关于华为的webservice接口对接 需要使用什么技术 才能通过规范? 下面我截图两张 是2个wsd

value-我已经调了整整两天,在线等大神求解决

问题描述 我已经调了整整两天,在线等大神求解决 Error:(28, -1) android-apt-compiler: [main] E:projectsaleForAndroidappsrcmainAndroidManifest.xml:28: error: Error: String types not allowed (at 'screenOrientation' with value 'sensorPortrait'). 解决方案 android版本呢?这个2.3以前是不支持的. 解决

急求,在线等,求大神解决一下

问题描述 急求,在线等,求大神解决一下 org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (No license is present.) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855) at org.apache.commons.dbcp.BasicDat