Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 如何将用户变量传输到paint方法_Java_Paint - Fatal编程技术网

Java 如何将用户变量传输到paint方法

Java 如何将用户变量传输到paint方法,java,paint,Java,Paint,我是新手,所以下面的代码可能会有很多问题。 它应该从文本字段中提取用户编写的文本,并为其绘制莫尔斯电码。它获取文本,以CharArray形式将字符串传输给这个类,但paint方法不绘制任何内容(paint方法中无法识别变量!!) 输入:构造函数获取另一个类的链接(或其中的内容)、字符串中的字符及其在字符串中的位置号 输出:仅绘制最后3行,无法识别来自外部绘制方法的其他变量 下面是一个不起作用的类: public class Procesare extends Canvas{ Morse

我是新手,所以下面的代码可能会有很多问题。
它应该从文本字段中提取用户编写的文本,并为其绘制莫尔斯电码。它获取文本,以CharArray形式将字符串传输给这个类,但paint方法不绘制任何内容(paint方法中无法识别变量!!)

输入:构造函数获取另一个类的链接(或其中的内容)、字符串中的字符及其在字符串中的位置号 输出:仅绘制最后3行,无法识别来自外部绘制方法的其他变量

下面是一个不起作用的类:

public class Procesare extends Canvas{
    Morse fereastra;
    String lit="",cod="";
    char car;
    int nr;

    public Procesare(Morse parinte,char c,int i){
        fereastra=parinte;
        car=c;  // with or without "this" doesn't seem to transmit values to the class
        nr=i;
        //this.lit=String.valueOf(c);
        switch (c){
                //this part is just testing that values were transmited, it works
                case 'a':
                    fereastra.canv.setBackground(Color.orange);
                    System.out.println(c+" .-");

                    break;
                case 'b': 
                    fereastra.canv.setBackground(Color.blue);
                    System.out.println(c+" -...");

                    break;
                case 'c': 
                    fereastra.canv.setBackground(Color.red);
                    System.out.println(c+" -.-.");

                    break;
                case 'd': 
                    fereastra.canv.setBackground(Color.green); 
                    System.out.println(c+" -..");

                    break;
                default: break;
            }
    }

    public void paint(Graphics g){
        lit=String.valueOf(car);
        switch (lit){
                case "a": cod=".-"; break;
                case "b": cod="-..."; break;

                default: break;
            }
        g.drawString(lit,5,10+nr*10);
        g.drawString(cod,15,10+nr*10);
        g.drawString(lit,5,10);  // these aren't drawing anything !?!?

        g.fillOval(15, 3, 6, 6); // just testing
        g.drawString("z",5,20);
        g.fillOval(15, 13, 6, 6); 
    }
}
主类,其工作原理是:

public class Morse extends Frame {
    xText camp;
    Procesare proc,canv;
    String s1, str;
    char[] cuv;
    int n;

    public Morse(String titlu){
      super(titlu);
      init();
    }  
    public static void main (String args[]){
        Morse app=new Morse("Morse much?");
        app.setSize(250,250);
        app.show();
    }
    public boolean handleEvent(Event evt)  {
      if (evt.id==Event.WINDOW_DESTROY)
      {System.exit(0);}
      return super.handleEvent(evt);
    }

    public void init(){
        setLayout(new GridLayout(3,1,10,20));
        setBackground(Color.gray);
        canv=new Procesare(this,' ',0);
        canv.setBackground(Color.orange);
        camp=new xText(this,"Introduceti textul aici:");              
        add(camp);
        add(canv);

    }
    public Insets getInsets(){
        return new Insets(30,30,30,30);
    }
    void update(xText input){

        s1=input.cText1.getText();
        cuv = s1.toCharArray();

        for(n=0;n<s1.length();n++){
            proc=new Procesare(this,cuv[n],n);
        }

    }
}
公共类莫尔斯扩展帧{
xText营地;
Procesare proc,canv;
s1串,str;
char[]cuv;
int n;
公共莫尔斯电码(字符串标题){
超级(titlu);
init();
}  
公共静态void main(字符串参数[]){
莫尔斯应用程序=新莫尔斯(“莫尔斯多少?”);
应用程序设置尺寸(250250);
app.show();
}
公共布尔handleEvent(事件evt){
if(evt.id==Event.WINDOW\u DESTROY)
{System.exit(0);}
返回super.handleEvent(evt);
}
公共void init(){
setLayout(新网格布局(3,1,10,20));
挫折背景(颜色:灰色);
canv=新程序(此,,,0);
canv.挫折背景(橙色);
camp=新的xText(这是“介绍文本aici”);
添加(营地);
添加(canv);
}
公共插图getInsets(){
返回新插图(30,30,30,30);
}
无效更新(xText输入){
s1=input.cText1.getText();
cuv=s1.toCharArray();

对于(n=0;nCan您可以发布您在该评论中提到的异常吗?线程“AWT-EventQueue-0”java.lang.NullPointerException:String为null(这是第一行,后面有很多行,比如:at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2817),表示字符串“lit”和/或“cod”传入时为null。您是否可以编辑帖子以包含所有异常,以及一些示例输入及其相应的输出?(实际输出,而不是预期输出)错误已解决:我忘记为“cod”字符串提供起始值,但paint方法仍然不绘制任何包含变量的内容