简体   繁体   English

java.lang.reflect.InvocationTargetException-带数组的小程序

[英]java.lang.reflect.InvocationTargetException - applet with Arrays

I'm tearing my hair out trying to figure out why this third applet I've written behaves just fine in BlueJ but throws a "java.lang.reflect.InvocationTargetException" when I try to view it in a browser. 我想弄清楚为什么我编写的第三个applet在BlueJ中表现良好,但是当我尝试在浏览器中查看它时却抛出“ java.lang.reflect.InvocationTargetException”。 I am still pretty much a newbie and can't figure out where to look to see the full error logs, either. 我仍然还是个新手,也不知道在哪里可以看到完整的错误日志。 Please help. 请帮忙。

Code

/**
 * Array - Dictionary (English to Korean)
 * 
 * Jodi Rehlander
 * October, 2015 for CSci1130-51
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;
import java.applet.*;

public class Dictionary extends JApplet implements ActionListener
{
JLabel mainLabel, picLabel, header;
Image headerImg;
ImageIcon headerIcon, translateIcon;

JButton[ ] words =
    {
        new JButton( "Airplane" ),
        new JButton( "Car" ),
        new JButton( "Cat" ),
        new JButton( "Chair" ),
        new JButton( "Flag" ),
        new JButton( "Newspaper" ),
        new JButton( "Spoon" ),
        new JButton( "Paintbrush" ),
        new JButton( "Horse" ),
        new JButton( "Female" )

    };

ImageIcon[ ] pics =
    {
        new ImageIcon( "airplane.png" ),
        new ImageIcon( "car.png" ),
        new ImageIcon( "cat.png" ),
        new ImageIcon( "chair.png" ),
        new ImageIcon( "flag.png" ),
        new ImageIcon( "newspaper.png" ),
        new ImageIcon( "spoon.png" ),
        new ImageIcon( "paintbrush.png" ),
        new ImageIcon( "horse.png" ),
        new ImageIcon( "female.png" ),
    };



public void init( )
{
    //set default background to white
    getContentPane( ).setBackground( Color.WHITE );

    setLayout( new BorderLayout( ) );

    headerImg = getImage( getCodeBase( ), "headerImg.png" );
    headerIcon = new ImageIcon( headerImg );
    header = new JLabel ( headerIcon );
    add( header, BorderLayout.NORTH );




    translateIcon = new ImageIcon( );
    picLabel = new JLabel( );
    picLabel.setHorizontalAlignment( JLabel.CENTER );
    add( picLabel, BorderLayout.CENTER );


    JPanel pane = new JPanel( new GridLayout( 10, 0 ) );
    pane.setOpaque( true );
    for (int x=0; x < words.length; x++ )
    {
        words[x].addActionListener( this );
        pane.add( words[x] );
    }
    add( pane, BorderLayout.WEST );
}


public void actionPerformed( ActionEvent ae)
{
    Object obj = ae.getSource( );
    for( int x=0; x < words.length; x++ )
        if( obj == words[x] )
           picLabel.setIcon( pics[x] );




    repaint( );    
}
}

HTML 的HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file automatically generated by BlueJ Java Development  -->
<!-- Environment.  It is regenerated automatically each time the  -->
<!-- applet is run.  Any manual changes made to file will be lost -->
<!-- when the applet is next run inside BlueJ.  Save into a       -->
<!-- directory outside of the package directory if you want to    -->
<!-- preserve this file. -->
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Dictionary Applet</title>
    </head>
    <body>
        <h1>Dictionary Applet</h1>
        <hr>
        <applet code="Dictionary.class" 
            width=600 
            height=500
            codebase="."

            alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
         >

            Your browser is ignoring the &lt;APPLET&gt; tag!      
        </applet>
        <hr>
    </body>
</html>

Error 错误

    ui: Pushing modality for applet ID 1 with dialog sun.plugin.util.PluginSysUtil$DummyDialog[dialog0,-100,-100,132x38,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,126x10,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
basic: Dialog type is not candidate for embedding
ui: Pushing modality for applet ID 1 with dialog javax.swing.JDialog[dialog1,462,324,516x190,layout=java.awt.BorderLayout,TOOLKIT_MODAL,title=Application Error,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,510x162,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
ui: Pushing modality for applet ID 1 with dialog sun.plugin.util.PluginSysUtil$DummyDialog[dialog2,-100,-100,132x38,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,126x10,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]    

To close the loop - we were meant to use unsigned .jars in the class. 要关闭循环,我们打算在类中使用unsigned .jars。 I had to move my arrays to the method and then it worked. 我必须将数组移动到该方法,然后它才能工作。 So I didn't get to use my fancy instantiation but I understand a lot more about parameter availability. 因此,我没有使用花哨的实例化,但是我对参数可用性了解更多。 Thanks to all who responded. 感谢所有回应。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM