GetContentPane() Error?

I'm a student and writing first java interface,
I get a error in my program that says;
"cannot resolve symbol - method getContentPane()"
This error came out of nowhere?
How do I fix this?
code fragment:
//add panels to frame
Container c = getContentPane();
c.add("North", upperPanel);
c.add("South", lowerPanel);
HELP!

you can only call getContentPane() inside ( i.e. this.getContentPane() ) if you extends JDialog or JFrame class, if not, getContentPane() will be unrecognized.

Similar Messages

  • GetContentPane function shows error

    The following program shows cannot resolve symbol at the getContentPane() function. CAn anybody tell me why this is happening
    import javax.swing.*;
    import java.io.*;
    class Test extends JFrame
    final String[] colhead = {"No","Name"};
    final Object[][] data = new Object[10][2];
    JTable table = null;
    JFrame frame = null;
    public Test()
    super("Table");
    data[0][0] = "1";
    data[0][1] = "Sanil";
    data[1][0] = "2";
    data[1][1] = "Kenney";
    frame = new JFrame();
    table = new JTable(data,colhead);
    Container content = frame.getContentPane();
    content.setLayout(null);
    }

    What package does Container belong to? Did you import the correct package?

  • How can I put all output error message into a String Variable ??

    Dear Sir:
    I have following code, When I run it and I press overflow radio button, It outputs following message:
    Caught RuntimeException: java.lang.NullPointerException
    java.lang.NullPointerException
         at ExceptionHandling.ExceptTest.actionPerformed(ExceptTest.java:72)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
         at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
         at java.awt.Component.processMouseEvent(Component.java:6038)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
         at java.awt.Component.processEvent(Component.java:5803)
         at java.awt.Container.processEvent(Container.java:2058)
         at java.awt.Component.dispatchEventImpl(Component.java:4410)
         at java.awt.Container.dispatchEventImpl(Container.java:2116)
         at java.awt.Component.dispatchEvent(Component.java:4240)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
         at java.awt.Container.dispatchEventImpl(Container.java:2102)
         at java.awt.Window.dispatchEventImpl(Window.java:2429)
         at java.awt.Component.dispatchEvent(Component.java:4240)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)Caught RuntimeException: java.lang.NullPointerException
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)I hope to catch all these error message into a String Variable such as StrErrorMsg, then I can use System.out.println(StrErrorMsg) to print it out or store somewhere, not only display at runtime,
    How can I do this??
    Thanks a lot,
    See code below.
    import java.awt.Frame;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.FileInputStream;
    import javax.swing.ButtonGroup;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    public class ExceptTest extends JFrame implements ActionListener {
        private double[] a;
      private JRadioButton divideByZeroButton;
      private JRadioButton badCastButton;
      private JRadioButton arrayBoundsButton;
      private JRadioButton nullPointerButton;
      private JRadioButton negSqrtButton;
      private JRadioButton overflowButton;
      private JRadioButton noSuchFileButton;
      private JRadioButton throwUnknownButton;
      public ExceptTest() {
        JPanel p = new JPanel();
        ButtonGroup g = new ButtonGroup();
        p.setLayout(new GridLayout(8, 1));
        divideByZeroButton = addRadioButton("Divide by zero", g, p);
        badCastButton = addRadioButton("Bad cast", g, p);
        arrayBoundsButton = addRadioButton("Array bounds", g, p);
        nullPointerButton = addRadioButton("Null pointer", g, p);
        negSqrtButton = addRadioButton("sqrt(-1)", g, p);
        overflowButton = addRadioButton("Overflow", g, p);
        noSuchFileButton = addRadioButton("No such file", g, p);
        throwUnknownButton = addRadioButton("Throw unknown", g, p);
        getContentPane().add(p);
      private JRadioButton addRadioButton(String s, ButtonGroup g, JPanel p) {
        JRadioButton button = new JRadioButton(s, false);
        button.addActionListener(this);
        g.add(button);
        p.add(button);
        return button;
      public void actionPerformed(ActionEvent evt) {
        try {
          Object source = evt.getSource();
          if (source == divideByZeroButton) {
            a[1] = a[1] / a[1] - a[1];
          } else if (source == badCastButton) {
            Frame f = (Frame) evt.getSource();
          } else if (source == arrayBoundsButton) {
            a[1] = a[10];
          } else if (source == nullPointerButton) {
            Frame f = null;
            f.setSize(200, 200);
          } else if (source == negSqrtButton) {
            a[1] = Math.sqrt(-1);
          } else if (source == overflowButton) {
            a[1] = 1000 * 1000 * 1000 * 1000;
            int n = (int) a[1];
          } else if (source == noSuchFileButton) {
            FileInputStream is = new FileInputStream("Java Source and Support");
          } else if (source == throwUnknownButton) {
            throw new UnknownError();
        } catch (RuntimeException e) {
          System.out.println("Caught RuntimeException: " + e);
          e.printStackTrace();
          System.out.println("Caught RuntimeException: " + e);
        } catch (Exception e) {
          System.out.println("Caught Exception: " + e);
      public static void main(String[] args) {
        JFrame frame = new ExceptTest();
        frame.setSize(150, 200);
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
        frame.show();
    }

    yes, I update as follows,
    but not looks good.
    import java.io.*;
    public class UncaughtLogger implements Thread.UncaughtExceptionHandler {
        private File file;
        private static String errorMessage;
        public UncaughtLogger(File file) {
            this.file = file;
            //Thread.setDefaultUncaughtExceptionHandler(this);
        public UncaughtLogger(String str) {
            this.errorMessage = str;
            Thread.setDefaultUncaughtExceptionHandler(this);
        //@Override()
        public void uncaughtException(Thread t, Throwable e){
            try {
                log(e);
            } catch (Throwable throwable) {
                System.err.println("error in logging:");
                throwable.printStackTrace();
        private void log(Throwable e) throws IOException {
            PrintWriter out = new PrintWriter(new FileWriter(file, true));
            try {
                e.printStackTrace(out);
            } finally {
                out.close();
        private static UncaughtLogger logger = new UncaughtLogger(new File("C:/temp/log.txt"));
        private static UncaughtLogger logger2 = new UncaughtLogger(errorMessage);
        public static void main(String[] args) {
                String s1 = "Hello World!";
                s1 = null;
                String s2 = s1.getClass().getName();
                System.out.println(s1);
                System.out.println(s2);
                System.out.println("errorMessage =" + errorMessage);
    }

  • Error while running Java application using Crystal Reports 2011

    Hello,
    I would like to ask for your help.
    Environment details:
    Java based standalone application in Development environment.
    Crystal Reports 2011 (no SP applied)
    Oracle 11g ( 32 bit client installed)
    Win7 64 bit OS.
    Workflow:
    While running the java application, which will display the reports I am getting the below mentioned error. I guess that is because I am missing the Crystal runtimes (Correct me if I am wrong).
    I know that CR2011 do not have any sdks/ jar available for deployment. In this case, which runtimes should I be using? Does installing CR2011 be enough in the development box?
    Please provide me the link from which I can download the same.
    Let me know if I need to provide more details on this. Any suggestions are most welcome.
    Thank You.
    Code used:
    reportClientDoc = new ReportClientDocument();
    System.err.println("Opening the Report ");
    reportClientDoc.open(REPORT_PATH, 0);
    // this is where the error or exception is thrown
    _Error: _
    log4j:WARN No appenders could be found for logger (com.crystaldecisions.reports.reportdefinition.ReportDocument).
    log4j:WARN Please initialize the log4j system properly.
    com.crystaldecisions.sdkreport.lib.ReportSDKException: com/businessobjects/reports/jdbinterface/common/DBException---- Error code:-2147467259 Error code name:failed
                    at com.businessobjects.reports.sdk.JRCCommunicationAdapter.<init>(SourceFile:286)
                    at com.businessobjects.sdk.erom.jrc.a.<init>(SourceFile:43)
                    at com.businessobjects.sdk.erom.jrc.ReportAgentFactory.createAgent(SourceFile:46)
                    at com.crystaldecisions.proxy.remoteagent.RemoteAgent.<init>(SourceFile:703)
                    at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:662)
                    at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:632)
                    at com.crystaldecisions.sdk.report.application.ClientDocument.if(SourceFile:504)
                    at com.crystaldecisions.sdk.report.application.ClientDocument.open(SourceFile:669)
                    at com.crystaldecisions.reports.sdk.ReportClientDocument.open(Unknown Source)
                    at rp.batch.bo.RpJRCExportReport.runReportExport(RpJRCExportReport.java:517)
                    at rp.batch.bo.RpSchedReportRun.process(RpSchedReportRun.java:163)
                    at rp.batch.bo.RpSchedReportRun.drive(RpSchedReportRun.java:240)
                    at rp.batch.bo.RpSchedReportRun.main(RpSchedReportRun.java:265)
    Caused by: java.lang.NoClassDefFoundError: com/businessobjects/reports/jdbinterface/common/DBException
                    at com.crystaldecisions.reports.queryengine.Session.a2(SourceFile:244)
                    at com.crystaldecisions.reports.datafoundation.DataFoundation.do(SourceFile:376)
                    at com.crystaldecisions.reports.dataengine.dfadapter.DFAdapter.do(SourceFile:111)
                    at com.crystaldecisions.reports.dataengine.datafoundation.CreateDataConnectionCommand.new(SourceFile:81)
                    at com.crystaldecisions.reports.common.CommandManager.a(SourceFile:71)
                    at com.crystaldecisions.reports.common.Document.a(SourceFile:203)
                    at com.businessobjects.reports.reportconverter.v12.e.a(SourceFile:442)
                    at com.businessobjects.reports.reportconverter.v12.e.a(SourceFile:231)
                    at com.businessobjects.reports.reportconverter.v12.d.m(SourceFile:192)
                    at com.businessobjects.reports.reportconverter.v12.f.if(SourceFile:210)
                    at com.businessobjects.reports.reportconverter.v12.V12SaveLoader.a(SourceFile:242)
                    at com.businessobjects.reports.loader.ReportLoader.a(SourceFile:205)
                    at com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:137)
                    at com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:76)
                    at com.businessobjects.reports.sdk.requesthandler.ReportDocumentRequestHandler.a(SourceFile:136)
                    at com.businessobjects.reports.sdk.JRCCommunicationAdapter.<init>(SourceFile:229)
                    ... 12 more
    Caused by: java.lang.ClassNotFoundException: com.businessobjects.reports.jdbinterface.common.DBException
                    at java.net.URLClassLoader1.run(URLClassLoader.java:200)
                    at java.security.AccessController.doPrivileged(Native Method)
                    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
                    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
                    at sun.misc.LauncherAppClassLoader.loadClass(Launcher.java:301)
                    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
                    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
                    ... 28 more

    Help me ...
    Ambient:
    Crystal Reports Viewer 14.0.0.0
    java.vendor = Sun Microsystems Inc.
    java.version = 1.6.0_37
    os.name = Windows NT (unknown)
    os.version = 6.2
    os.arch = amd64
    Exception:
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: com.businessobjects.sdk.erom.jrc.ReportAgentFactory---- Error code:-2147215357 [CRSDK00000026] Error code name:internal
              at com.crystaldecisions.sdk.occa.report.lib.ReportSDKException.throwReportSDKException(ReportSDKException.java:112)
              at com.crystaldecisions.proxy.remoteagent.RemoteAgent.createDefaultAgent(RemoteAgent.java:1000)
              at com.crystaldecisions.sdk.occa.report.application.ClientDocument.initRemoteAgent(ClientDocument.java:770)
              at com.crystaldecisions.sdk.occa.report.application.ClientDocument.open(ClientDocument.java:961)
              at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.open(ReportClientDocument.java:226)
              at src.HelloWorldSwing.createAndShowGUI(HelloWorldSwing.java:54)
              at src.HelloWorldSwing.main(HelloWorldSwing.java:24)
    Source:
    import java.awt.BorderLayout;
    import javax.swing.JFrame;
    import com.crystaldecisions.ReportViewer.ReportViewerBean;
    import com.crystaldecisions.sdk.occa.report.application.DatabaseController;
    import com.crystaldecisions.sdk.occa.report.application.OpenReportOptions;
    import com.crystaldecisions.sdk.occa.report.application.ReportClientDocument;
    import com.crystaldecisions.sdk.occa.report.data.IConnectionInfo;
    import com.crystaldecisions.sdk.occa.report.reportsource.IReportSource;
    public class HelloWorldSwing {
               * @param args
              public static void main(String[] args) {
                        HelloWorldSwing pgm = new HelloWorldSwing();
                        try {
                                  pgm.createAndShowGUI();
                        } catch (Exception e) {
                                  e.printStackTrace();
                                  //JOptionPane.showMessageDialog(null, e.toString());
               * @throws Exception
              public void createAndShowGUI() throws Exception {
                        // Make sure we have nice window decorations.
                        JFrame.setDefaultLookAndFeelDecorated(false);
                        // Create and set up the window.
                        JFrame frame = new JFrame("HelloWorldSwing");
                        frame.setTitle("Titolo del Report");
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        ReportViewerBean viewer = new ReportViewerBean();
                        viewer.init(new String[0], null, null, null);
                        ReportClientDocument rpt = new ReportClientDocument();
                        rpt.setReportAppServer(ReportClientDocument.inprocConnectionString); // inproc:jrc
                        rpt.open("Report.rpt", OpenReportOptions._openAsReadOnly);
                        IReportSource rptSource = rpt.getReportSource();
                        viewer.setReportSource(rptSource);
                        frame.getContentPane().add(viewer, BorderLayout.CENTER);
                        frame.setSize(1930, 1030);
                        frame.setVisible(true);
                        viewer.start();

  • Problem with PDFBox-0.7.3 library - Runtime Error

    Hello,
    The problem is inside the method "chamaConversor".
    " conversor.pdfToText(arquivoPdf,arquivoTxt);" make a file.txt from one file.pdf. After that it don?t return the control to "ConstrutorDeTemplate2.java", and show the following error message:
    Exception in thread "AWT-EventQueue-O" java.lang.NoClassDefFoundError : org/fontbox/afm/FontMetric
    at org.pdfbox.pdmodel.font.PDFont.getAFM (PDFont.java:334)
    I am using the NetBeans IDE 5.5.
    I have added all of these libraries below to my project from c:\Program Files\netbeans-5.5\PDFBox-0.7.3\external:
    * FontBox-0.1.0-dev.jar
    * ant.jar
    * bcmail-jdk14-132.jar
    * junit.jar
    * bcprov-jdk14-132.jar
    * lucene-core-2.0.0.jar
    * checkstyle-all-4.2.jar
    * lucene-demos-2.0.0.jar
    and PDFBox-0.7.3.jar from c:\Program Files\netbeans-5.5\PDFBox-0.7.3\lib.
    There are no more jar from PDFBox-0.7.3 directory.
    All of these libraries are in "Compile-time Libraries" option in Project Properties. Should I add they to "Run-time Libraries" option?
    What is going on?
    Thank you!
      * ConstrutorDeTemplate2.java
      * Created on 11 de Agosto de 2007, 14:54
      * @author
    package br.unifacs.dis2007.template2;
    // Java core packages
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.text.*;
    import java.util.*;
    // Java extension packages
    import javax.swing.*;
    import org.pdfbox.*;
    public class ConstrutorDeTemplate2 extends JFrame
        implements ActionListener {
        private JTextField enterField;
        private JTextArea outputArea;
        private BufferedWriter out;
        private String word;
        private PdfToText conversor = new PdfToText();
        // ajusta a interface do usu?rio
        public ConstrutorDeTemplate2()
           super( "Testing class File" );
           enterField = new JTextField("Digite aqui o nome do arquivo :" );
           enterField.addActionListener( this );
           outputArea = new JTextArea();
           ScrollPane scrollPane = new ScrollPane();
           scrollPane.add( outputArea );
           Container container = getContentPane();
           container.add( enterField, BorderLayout.NORTH );
           container.add( scrollPane, BorderLayout.CENTER );
           setSize( 400, 400 );
           show();
        // Exibe as informa??es sobre o arquivo especificado pelo usu?rio
        public void actionPerformed( ActionEvent actionEvent )
           File name = new File( actionEvent.getActionCommand() );
           // Se o arquivo existe, envia para a sa?da as informa??es sobre ele
           if ( name.exists() ) {
              outputArea.setText(
                 name.getName() + " exists\n" +
                 ( name.isFile () ?
                    "is a file\n" : "is not a file\n" ) +
                 ( name.isDirectory() ?
                    "is a directory\n" : "is not a directory\n" ) +
                 ( name.isAbsolute() ? "is absolute path\n" :
                    "is not absolute path\n" ) +
                 "Last modified: " + name.lastModified() +
                 "\nLength: " + name.length () +
                 "\nPath: " + name.getPath() +
                 "\nAbsolute path: " + name.getAbsolutePath() +
                 "\nParent: " + name.getParent() );
              // informa??o de sa?da se "name" ? um arquivo
              if ( name.isFile() ) {
                 String nameString = String.valueOf(name.getPath());
                 String nameTeste = new String(nameString);
                 if (nameString.endsWith(".pdf"))
                     nameTeste = chamaConversor(nameString);
                 else
                     if (nameString.endsWith(".doc"))
                         nameTeste = chamaConversorDoc(nameString); // chama conversor de arquivos DOC
                     else
                         if (nameString.endsWith(".txt"))
                             nameTeste = nameString;
                 // se o arquivo termina com ".txt"           
                 if (nameTeste.endsWith(".txt"))
                     // acrescenta conte?do do arquivo ? ?rea de sa?da
                     try {
                         // Create the tokenizer to read from a file
                         FileReader rd = new FileReader(nameTeste);
                         StreamTokenizer st = new StreamTokenizer(rd);
                         // Prepare the tokenizer for Java-style tokenizing rules
                         st.parseNumbers();
                         st.wordChars('_', '_');
                         st.eolIsSignificant (true);
                         // If whitespace is not to be discarded, make this call
                         st.ordinaryChars(0, ' ');
                         // These calls caused comments to be discarded
                         st.slashSlashComments(true);
                         st.slashStarComments(true);
                         // Parse the file
                         int token = st.nextToken();
                         String word_ant = "";
                         outputArea.append( " \n" );
                         out = new BufferedWriter(new FileWriter(nameTeste, true));
                         while (token != StreamTokenizer.TT_EOF) {
                             token = st.nextToken();
                             if (token == StreamTokenizer.TT_EOL){
                                 //out.write(word);
                                 out.flush();
                                 out = new BufferedWriter(new FileWriter(nameTeste, true));
                                 //outputArea.append( word + "\n" );
                                 // out.append ( "\n" );
                             switch (token) {
                             case StreamTokenizer.TT_NUMBER:
                                 // A number was found; the value is in nval
                                 double num = st.nval;
                                 break;
                             case StreamTokenizer.TT_WORD:
                                 // A word was found; the value is in sval
                                 word = st.sval;
                                 //   if (word_ant.equals("a") || word_ant.equals("an") || word_ant.equals("the") || word_ant.equals("The") || word_ant.equals("An"))
                                 outputArea.append( word.toString() + " \n " );
                                // out.append( word + "   " );
                                 //     word_ant = word;
                                 break;
                             case '"':
                                 // A double-quoted string was found; sval contains the contents
                                 String dquoteVal = st.sval;
                                 break;
                             case '\'':
                                 // A single-quoted string was found; sval contains the contents
                                 String squoteVal = st.sval;
                                 break;
                             case StreamTokenizer.TT_EOL:
                                 // End of line character found
                                 break;
                             case StreamTokenizer.TT_EOF:
                                 // End of file has been reached
                                 break;
                             default:
                                 // A regular character was found; the value is the token itself
                                 char ch = (char)st.ttype;
                                 break;
                             } // fim do switch
                         } // fim do while
                         rd.close();
                         out.close();
                     } // fim do try
                     // process file processing problems
                     catch( IOException ioException ) {
                         JOptionPane.showMessageDialog( this,
                         "FILE ERROR",
                         "FILE ERROR", JOptionPane.ERROR_MESSAGE );
                 } // fim do if da linha 92 - testa se o arquivo ? do tipo texto
              } // fim do if da linha 78 - testa se ? um arquivo
              // output directory listing
              else if ( name.isDirectory() ) {
                     String directory[] = name.list();
                 outputArea.append( "\n\nDirectory contents:\n");
                 for ( int i = 0; i < directory.length; i++ )
                    outputArea.append( directory[ i ] + "\n" );
              } // fim do else if da linha 184 - testa se ? um diret?rio
           } // fim do if da linha 62 - testa se o arquivo existe
           // not file or directory, output error message
           else {
              JOptionPane.showMessageDialog( this,
                 actionEvent.getActionCommand() + " Does Not Exist",
                 "ERROR", JOptionPane.ERROR_MESSAGE );
        }  // fim do m?todo actionPerformed
        // m?todo que chama o conversor
        public String chamaConversor(String arquivoPdf){
            String arquivoTxt = new String(arquivoPdf);
            arquivoTxt = arquivoPdf.replace(".pdf", ".txt");
            try {
                conversor.pdfToText(arquivoPdf,arquivoTxt);
            catch (Exception ex) {
                ex.printStackTrace();
            return (arquivoTxt);
        // executa a aplica??o
        public static void main( String args[] )
           ConstrutorDeTemplate2 application = new ConstrutorDeTemplate2();
           application.setDefaultCloseOperation (
              JFrame.EXIT_ON_CLOSE );
        } // fim do m?todo main
    }  // fim da classe ExtratorDeSubstantivos2
      * PdfToText.java
      * Created on 11 de Agosto de 2007, 10:57
      * To change this template, choose Tools | Template Manager
      * and open the template in the editor.
    //package br.unifacs.dis2007.template2;
      * @author www
    package br.unifacs.dis2007.template2;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.net.MalformedURLException;
    import java.net.URL ;
    import org.pdfbox.pdmodel.PDDocument;
    import org.pdfbox.pdmodel.encryption.AccessPermission;
    import org.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
    import org.pdfbox.util.PDFText2HTML;
    import org.pdfbox.pdmodel.font.PDFont.* ;
    import org.pdfbox.util.PDFTextStripper;
    import org.pdfbox.util.*;
    import org.pdfbox.pdmodel.*;
    public class PdfToText
        public void pdfToText( String pdfFile, String textFile) throws Exception
                Writer output = null;
                PDDocument document = null;
                try
                    try
                        //basically try to load it from a url first and if the URL
                        //is not recognized then try to load it from the file system.
                        URL url = new URL( pdfFile );
                        document = PDDocument.load( url );
                        String fileName = url.getFile();
                        if( textFile == null && fileName.length () >4 )
                            File outputFile =
                                new File( fileName.substring( 0,fileName.length() -4 ) + ".txt" );
                            textFile = outputFile.getName();
                    catch( MalformedURLException e )
                        document = PDDocument.load( pdfFile );
                        if( textFile == null && pdfFile.length() >4 )
                            textFile = pdfFile.substring( 0,pdfFile.length() -4 ) + ".txt";
                       //use default encoding
                      output = new OutputStreamWriter( new FileOutputStream( textFile ) );
                    PDFTextStripper stripper = null;
                    stripper = new PDFTextStripper();
                    stripper.writeText( document, output );
                finally
                    if( output != null )
                        output.close();
                    if( document != null )
                        document.close();
                }//finally
            }//end funcao
     

    All of these libraries are in "Compile-time
    Libraries" option in Project Properties. Should I add
    they to "Run-time Libraries" option?Yes

  • Runtime error accessing ArrayList

    These 2 classes are basically the classes from the book developing games in java, without the fullscreen stuff. They are supposed to create an animation. They both compile fine but when I run I get an error message, an no animation, paint() is only called once. Here's the error message:
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    at java.util.ArrayList.RangeCheck(ArrayList.java:546)
    at java.util.ArrayList.get(ArrayList.java:321)
    at Animation.getFrame(Animation.java:60)
    at Animation.update(Animation.java:43)
    at AnimationTest1.animationLoop(AnimationTest1.java:58)
    at AnimationTest1.run(AnimationTest1.java:44)
    at AnimationTest1.main(AnimationTest1.java:10)
    I think this means the program is trying to access frame 4 when there is none. Right? I just can't get my brain around this. Any help would be great!
    import java.awt.Image;
    import java.util.ArrayList;
    /*     this class manages a serie of images (frames) and the amount of time to
         display each frame */
    public class Animation {
         private ArrayList frames;
         private int currFrameIndex;
         private long animTime;
         private long totalDuration;
         //creates a new, empty animation, calls start().
         public Animation() {
              frames = new ArrayList();
              totalDuration = 0;
              start();
         //adds an image to the animation, + how long to display the image.
         public synchronized void addFrame(Image image, long duration) {
              totalDuration += duration;
              frames.add(new AnimFrame(image, totalDuration));
         //starts this animation over from the beginning .
         public synchronized void start() {
              animTime = 0;
              currFrameIndex = 0;
         //updates this animations current frame if necessary
         public synchronized void update(long elapsedTime) {
              if (frames.size() >1) {
                   animTime += elapsedTime;
                   if (animTime >= totalDuration) {
                        animTime = animTime % totalDuration;
                        currFrameIndex = 0;
                   while (animTime > getFrame(currFrameIndex).endTime) {
                        currFrameIndex ++;
         //gets the animations current frame. null if none availible.
         public synchronized Image getImage() {
              if (frames.size() == 0) {
                   return null;
              else {
                   return getFrame(currFrameIndex).image;
         private AnimFrame getFrame(int i) {
              return (AnimFrame)frames.get(i);
         private class AnimFrame {
              Image image;
              long endTime;
              public AnimFrame(Image image, long endtime) {
                   this.image = image;
                   this.endTime = endTime;
    import java.awt.*;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    public class AnimationTest1 {
         public static void main (String args[]) {          
              AnimationTest1 test = new AnimationTest1();
              test.run();
         private static final long DEMO_TIME = 5000;
         private JFrame frame;
         private Animation anim;
         public void loadImages() {
              //load images
              Image player1 = loadImage("gif1.png");
              Image player2 = loadImage("gif2.png");
              Image player3 = loadImage("gif3.png");
              //create animation
              anim = new Animation();
              anim.addFrame(player1, 200);
              anim.addFrame(player2, 200);
              anim.addFrame(player3, 200);
              anim.addFrame(player2, 200);
         //loads image with ImageIcon
         private Image loadImage(String filename) {
              return new ImageIcon(filename).getImage();
         public void run() {
              try {
                   frame = new JFrame();
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   frame.setSize(300, 300);
                   frame.setVisible(true);
                   loadImages();
                   animationLoop();
              finally {
         public void animationLoop() {
              long startTime = System.currentTimeMillis();
              long currTime = startTime;
              while (currTime - startTime < DEMO_TIME) {
                   long elapsedTime = System.currentTimeMillis() - currTime;
                   currTime += elapsedTime;
                   anim.update(elapsedTime);
                   //getContentpane.getgraphics??!!
                   Graphics g = frame.getGraphics();
                   draw(g);
                   g.dispose();
                   try {
                        Thread.sleep(20);
                   catch (InterruptedException ex) {}
         //draw the animation
         public void draw(Graphics g) {
              g.setColor(Color.white);
              g.fillRect(0, 0, 300, 300);          
              g.drawImage(anim.getImage(), 0, 0, null);
    }

    106498II wrote:
    i changed it to read:
    while (animTime > getFrame(currFrameIndex).endTime) {
                        currFrameIndex ++;
                        if (currFrameIndex >3) {
                             currFrameIndex = 0;
                        }this gets rid of the error but still no animation. Perhaps its something to do with that I draw directly on the JFrame?On the JFrame? Better to draw in a JPanel or JComponent. Also, perhaps you're trying to animate on the EDT in which case you get the beginning picture, and the end picture but usually you get nothing in between. Are you using a non-EDT thread or a Swing Timer?
    Addendum: yeah it looks like you're trying to put the EDT (event dispatch thread -- the main thread that runs Swing) to sleep here. Please don't do this. Also you're trying to draw outside of a paint or paintComponent method.
    Solution: Run don't walk to the Sun java2D and Swing graphics tutorials and read and study them.
    Edited by: petes1234 on Dec 11, 2007 7:21 PM

  • Exception Error   =/

    Hello, java newb here.
    I have been working on one of my assignments for school. Where as we haven't gotten into GUI yet ... the many required output options of the assignment make it seem almost crazy not to have an interface to navigate with. I have probably bitten off a lot more than I can chew by trying to use tools I'm not ready for yet. I'm trying to learn to create an interface at this time on my own, and when I can get that to work I will begin trying to integrate the actual inputs and outputs of the assignment.
    Anyways, I am getting the following error:
    Exception in thread "main" java.lang.NoClassDefFoundError: IntroTest3/java
    What I don't understand is the code compiles without errors. Its when I try to run the program that the message is displayed. Can anybody advise me as to perhaps what could be happening between compile time and run time? I don't expect anybody to give me any answers or fix my lousy code. Just trying to learn what to look for when it comes to identifying errors.I will paste the code below. By the way, yes I did insert/modify a lot of pieces from some of the tutorial codes or my textbook codes because I don't know enough to fill in the gaps on my own.
    import javax.swing.JInternalFrame;
    import javax.swing.JDesktopPane;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JMenuBar;
    import javax.swing.JFrame;
    import javax.swing.KeyStroke;
    import java.awt.event.*;
    import java.awt.*;
    public class IntroTest3 extends JFrame implements ActionListener
    {//BEGIN INTROTEST3 CLASS
    private JDesktopPane desktop;               // Declare a new desktop frame (Instance variable)
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public IntroTest3()               // Constructor for IntroTest3 class
         {//BEGIN INTROTEST3 CONSTRUCTOR
         super( "Grade Calculator v1.3" );     // Title bar text
         int inset = 50; // This indents the window?
         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
         setBounds(inset, inset,
    screenSize.width - inset*2,
    screenSize.height - inset*2);
         desktop = new JDesktopPane();          // Make a new desktop frame
         getContentPane().add( desktop );     // Create the content pane for the desktop frame
         setJMenuBar(createMenuBar());          // Menu bar will be made in createMenuBar()
    desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); // Faster dragging???
         }//END INTROTEST3 CONSTRUCTOR
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    protected JMenuBar createMenuBar()                
         {//BEGIN CREATEMENUBAR
    //- "menuBar" is the menu bar -
         JMenuBar menuBar = new JMenuBar();          // Create new menu BAR
    *     FIRST MENU - " ADD GRADES ". INCLUDES ITEMS: "REGISTER A NEW CLASS",     *
    *     AND "INSERT GRADES".                                   *
    //- "add_menu" is first option on menu bar -
         JMenu add_menu = new JMenu(" Add Grades ");     // Create the first menu on the bar
    add_menu.setMnemonic(KeyEvent.VK_A);          // Set mnemonic to keystroke A?
         menuBar.add( add_menu );               // Add the menu to the menu bar
    //- "reg_class" is first item under menu -
    //- option "add_menu"               -
         JMenuItem reg_class = new JMenuItem(" Register A New Class "); //New option under Add Grades menu
    reg_class.setMnemonic(KeyEvent.VK_R); // Set mnemonic to keystroke R
    reg_class.setAccelerator(KeyStroke.getKeyStroke(
    KeyEvent.VK_R, ActionEvent.ALT_MASK));     // Uh, whatever that is ;O
    reg_class.setActionCommand("reg"); // Assign command "reg" to initiate
    reg_class.addActionListener(this); // and add it to ActionListener
    add_menu.add(reg_class);
    //- "insert_g" is next item under menu -
    //- option "add_menu"               -
         JMenuItem insert_g = new JMenuItem(" Insert New Grades "); //2nd option under Add Grades menu
    insert_g.setMnemonic(KeyEvent.VK_I); // Set mnemonic to keystroke I
    insert_g.setAccelerator(KeyStroke.getKeyStroke(
    KeyEvent.VK_I, ActionEvent.ALT_MASK));     // ....
    insert_g.setActionCommand("ins"); // Assign command "ins" to initiate
    insert_g.addActionListener(this); // and add it to ActionListener
    add_menu.add(insert_g);
    return (menuBar);
         }//END CREATEMENUBAR
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // React to menu selection          -
    public void actionPerformed(ActionEvent e)
         {//BEGIN ACTIONPERFORMED
    if ("reg".equals(e.getActionCommand()))
              { //new
         createFrame1();
         else if ("ins".equals(e.getActionCommand()))
              { //new
         createFrame2();
         else
         quit();
         }//END ACTIONPERFORMED
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Create frame for registering a new class          -
    protected void createFrame1()
    {//BEGIN CREATEFRAME1
    RegFrame frame = new RegFrame();          // New frame RegFrame
    frame.setVisible(true);
    desktop.add(frame);                    // Add new frame to desktop
    try
         {                              // What the fuck is THIS shit?
    frame.setSelected(true);
    } catch (java.beans.PropertyVetoException e) {}
    }//END CREATEFRAME1
    // Create frame for inserting new grades          -
    protected void createFrame2()
    {//BEGIN CREATEFRAME2
    InsFrame frame = new InsFrame();          // New frame InsFrame
    frame.setVisible(true);
    desktop.add(frame);                    // Add new frame to desktop
    try
         {                              // What the fuck is THIS shit too?
    frame.setSelected(true);
    } catch (java.beans.PropertyVetoException e) {}
    }//END CREATEFRAME2
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //Quit the application.
    protected void quit()
    System.exit(0);
    *     COPIED CREATE AND SHOW GUI PIECE FOR TESTING
    private static void createAndShowGUI()
         {//BEGIN CREATEANDSHOW
    //Make sure we have nice window decorations.
    JFrame.setDefaultLookAndFeelDecorated(true);
    //Create and set up the window.
    IntroTest3 frame = new IntroTest3();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Display the window.
    frame.setVisible(true);     
         }//END CREATEANDSHOW
    public static void main(String[] args)
         {//BEGIN MAIN
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable()
              {//BEGIN SOME SHIT
         public void run()
         createAndShowGUI();
    });//END SOME SHIT
    }//END MAIN
    // TEST TEST TEST
    class InsFrame extends JInternalFrame
    static final int xOffset = 40, yOffset = 40;
    public InsFrame() {       
         super(" Insert New Grades ",
    true, //resizable
    true, //closable
    true, //maximizable
    true);//iconifiable
    //...Create the GUI and put it in the window...
    //...Then set the window size or call pack...
    setSize(300,300); //Set the window's location.
    setLocation(xOffset, yOffset);
    // TEST TEST TEST
    class RegFrame extends JInternalFrame
    static final int xOffset = 30, yOffset = 30;
    public RegFrame() {       
    super(" Register a New Class ",
    true, //resizable
    true, //closable
    true, //maximizable
    true);//iconifiable
    //...Create the GUI and put it in the window...
    //...Then set the window size or call pack...
    setSize(300,300); //Set the window's location.
    setLocation(xOffset, yOffset);
    Something else that I don't really understand is when I had the classes RegFrame and InsFrame to create the frames, located in different files, I had problems. The end of the main file, IntroTest3 kept giving me errors saying " 'class' or 'interface' expected."
    My teacher gave us this command the other day: javac -classpath . <filename>.java
    He said that this tells the file that the public classes it is looking for will be at the same location (in the same directory). I tried this on some sample code in the lab and it worked with what I had, but I guess not here....
    However, when I was messing around trying different things, I pasted RegFrame and InsFrame into the same file at the bottom as it is in the above code. After removing "public", it compiled.
    So I'm not sure why it occured the way it did.
    Anyways if anybody has any advice I would really be grateful, and I promise I'm not one of those obnoxious people who expects somebody on a forum to do their homework for them! Thank you and I'm sorry if I ramble. =(

    Exception in thread "main" java.lang.NoClassDefFoundError: IntroTest3/javaYou're invoking it like this, aren't you:
    java IntroTest3.java
    That's wrong. The argument to java should be a class name, not the name of the source file or even the filename of the class.
    So what's happening is that the JVM thinks that you're telling it to execute the class called "java" in a package called "IntroTest3".
    You should be doing:
    java IntroTest3

  • No errors but no sound output . Help !

    Dear Java People,
    I have a program that has a good look with buttons but the
    sound actionPerformed() play() sound does not work.
    Below is the coding and below that is the original version
    Thank you in advance
    Norman
    import java.util.*;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    import java.applet.*;
    import java.awt.event.*;
    import java.net.*;
    public class MyMusicApplet3 extends JApplet implements ActionListener
      AudioClip[] acSounds= new AudioClip[9];
      public void init()
        try
            acSounds[0] = getAudioClip(getCodeBase(),"seashore21"  + ".mid");
            acSounds[1] = getAudioClip(getCodeBase(),"seashore22" + ".mid");
            acSounds[2] = getAudioClip(getCodeBase(),"seashore23"  + ".mid");
           acSounds[3] = getAudioClip(getCodeBase(),"seashore24" + ".mid");
           acSounds[4] = getAudioClip(getCodeBase(),"seashore25"  + ".mid");
           acSounds[5] = getAudioClip(getCodeBase(),"seashore26" + ".mid");
           acSounds[6] = getAudioClip(getCodeBase(),"seashore27"  + ".mid");
          acSounds[7] = getAudioClip(getCodeBase(),"seashore28" + ".mid");
            acSounds[8] = getAudioClip(getCodeBase(),"seashore29" + ".mid");
       catch (Exception e)
        System.out.println("Error here " );
            Container myContentPane = getContentPane();
            myContentPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
            myContentPane.add(getButton("1", Color.orange, Color.blue));
            myContentPane.add(getButton("2", Color.blue, Color.yellow));
            myContentPane.add(getButton("3", Color.black, Color.white));
            myContentPane.add(getButton("4", Color.black, Color.pink));
            myContentPane.add(getButton("5", Color.white, Color.red));
            myContentPane.add(getButton("6", Color.blue, Color.green));
            myContentPane.add(getButton("7", Color.black, Color.cyan));
            myContentPane.add(getButton("8", Color.black, Color.yellow));
            myContentPane.add(getButton("9", Color.black, Color.cyan));
        public void actionPerformed(ActionEvent e)
           String command = e.getActionCommand();
           int index = Integer.parseInt(command)-1;
           acSounds[index].play();
       public JButton getButton(String label, Color fore, Color back)
         {          JButton button = new JButton("sound "+label);
                    button.setPreferredSize(new Dimension(90,90));
                    button.setFont(new Font("Arial", Font.BOLD,14));
                    button.setBorder(BorderFactory.createRaisedBevelBorder());
                    button.setForeground(fore);
                    button.setBackground(back);
                    button.addActionListener(this);
                    button.setActionCommand(label);
                    return button;
    import java.util.*;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    import java.applet.*;
    import java.awt.event.*;
    import java.net.*;
    public class MyMusicApplet_1 extends JApplet implements ActionListener
         JButton myJButton;
         AudioClip acSound_1;
         AudioClip acSound_2;
         AudioClip acSound_3;
         AudioClip acSound_4;
         AudioClip acSound_5;
         AudioClip acSound_6;
         AudioClip acSound_7;
         AudioClip acSound_8;
         AudioClip acSound_9;
         JButton myJButtonSound1;
         JButton myJButtonSound2;
         JButton myJButtonSound3;
         JButton myJButtonSound4;
         JButton myJButtonSound5;
         JButton myJButtonSound6;
         JButton myJButtonSound7;
         JButton myJButtonSound8;
         JButton myJButtonSound9;
      public void init()
            try
             acSound_1 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_2 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_3 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_4 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_5 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_6 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_7 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_8 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             acSound_9 = getAudioClip(new URL ("c:/Program Files/Cakewalk/Cakewalk Pro Audio 9/seashore.wrk"));
             catch (MalformedURLException e)
               System.out.println("Error here " );
           Container myContentPane = getContentPane();
           myContentPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
            Dimension buttonSize = new Dimension(190,100);
           Font myFont = new Font("Arial", Font.BOLD,14);
           Border myEdge = BorderFactory.createRaisedBevelBorder();
                    //create 1st button's object
                     myJButtonSound1 = new JButton("sound #1");
                    myJButtonSound1.addActionListener(this);
                   //set the button's border and size, font background and foreground
                   myJButtonSound1.setBorder(myEdge);
                   myJButtonSound1.setPreferredSize(buttonSize);
                   myJButtonSound1.setFont(myFont);
                   myJButtonSound1.setBackground(Color.orange);
                   myJButtonSound1.setForeground(Color.black);
                    //create 2nd button's object
                     myJButtonSound2 = new JButton("sound #2");
                    myJButtonSound2.addActionListener(this);
                   //set the button's border and size, font, background and foreground
                   myJButtonSound2.setBorder(myEdge);
                   myJButtonSound2.setPreferredSize(buttonSize);
                   myJButtonSound2.setFont(myFont);
                   myJButtonSound2.setBackground(Color.blue);
                   myJButtonSound2.setForeground(Color.black);
                    //create 3rd button's object
                     myJButtonSound3 = new JButton("sound #3");
                    myJButtonSound1.addActionListener(this);
                   //set the button's border and size, font, background and foreground
                   myJButtonSound3.setBorder(myEdge);
                   myJButtonSound3.setPreferredSize(buttonSize);
                   myJButtonSound3.setFont(myFont);
                   myJButtonSound3.setBackground(Color.cyan);
                   myJButtonSound3.setForeground(Color.black);
                    //create 4th button's object
                     myJButtonSound4 = new JButton("sound #4");
                    myJButtonSound4.addActionListener(this);
                   //set the button's border and size, font background and foreground
                   myJButtonSound4.setBorder(myEdge);
                   myJButtonSound4.setPreferredSize(buttonSize);
                   myJButtonSound4.setFont(myFont);
                   myJButtonSound4.setBackground(Color.pink);
                   myJButtonSound4.setForeground(Color.black);
                   //create 5th button's object
                   myJButtonSound5 = new JButton("sound #5");
                  myJButtonSound5.addActionListener(this);
                 //set the button's border and size, font background and foreground
                 myJButtonSound5.setBorder(myEdge);
                 myJButtonSound5.setPreferredSize(buttonSize);
                 myJButtonSound5.setFont(myFont);
                 myJButtonSound5.setBackground(Color.red);
                 myJButtonSound5.setForeground(Color.black);
                  //create 6th button's object
                   myJButtonSound6 = new JButton("sound #6");
                  myJButtonSound6.addActionListener(this);
                 //set the button's border and size, font, background and foreground
                 myJButtonSound6.setBorder(myEdge);
                 myJButtonSound6.setPreferredSize(buttonSize);
                 myJButtonSound6.setFont(myFont);
                 myJButtonSound6.setBackground(Color.green);
                 myJButtonSound6.setForeground(Color.black);
                  //create 7th button's object
                   myJButtonSound7 = new JButton("Choice #7");
                  myJButtonSound7.addActionListener(this);
                 //set the button's border and size, font, background and foreground
                 myJButtonSound7.setBorder(myEdge);
                 myJButtonSound7.setPreferredSize(buttonSize);
                 myJButtonSound7.setFont(myFont);
                 myJButtonSound7.setBackground(Color.cyan);
                 myJButtonSound7.setForeground(Color.black);
                  //create 8th button's object
                   myJButtonSound8 = new JButton("Choice #8");
                  myJButtonSound8.addActionListener(this);
                 //set the button's border and size, font background and foreground
                 myJButtonSound8.setBorder(myEdge);
                 myJButtonSound8.setPreferredSize(buttonSize);
                 myJButtonSound8.setFont(myFont);
                 myJButtonSound8.setBackground(Color.yellow);
                 myJButtonSound8.setForeground(Color.black);
                  //create 9th button's object
                   myJButtonSound9 = new JButton("Choice #9");
                  myJButtonSound9.addActionListener(this);
                 //set the button's border and size, font background and foreground
                 myJButtonSound9.setBorder(myEdge);
                 myJButtonSound9.setPreferredSize(buttonSize);
                 myJButtonSound9.setFont(myFont);
                 myJButtonSound9.setBackground(Color.blue);
                 myJButtonSound9.setForeground(Color.black);
                   //add the buttons to the content pane
                   myContentPane.add(myJButtonSound1);
                   myContentPane.add(myJButtonSound2);
                   myContentPane.add(myJButtonSound3);
                   myContentPane.add(myJButtonSound4);
                   myContentPane.add(myJButtonSound5);
                   myContentPane.add(myJButtonSound6);
                   myContentPane.add(myJButtonSound7);
                   myContentPane.add(myJButtonSound8);
                   myContentPane.add(myJButtonSound9);
          public void actionPerformed(ActionEvent e)
             myJButton = (JButton)e.getSource();
            if(myJButton == myJButtonSound1)
              acSound_1.play();
            if(myJButton == myJButtonSound2)
              acSound_2.play();
            if(myJButton == myJButtonSound3)
              acSound_3.play();
            if(myJButton == myJButtonSound4)
              acSound_4.play();
            if(myJButton == myJButtonSound5)
              acSound_5.play();
             if(myJButton == myJButtonSound6)
               acSound_6.play();
                       if(myJButton == myJButtonSound7)
                         acSound_7.play();
                       if(myJButton == myJButtonSound8)
                         acSound_8.play();
                        if(myJButton == myJButtonSound9)
                          acSound_9.play();

    Norman-
    All outawater suggested is that you lop out the code that you are using
    for playing sounds and make sure that works, since that seems to be
    where your problem is. The rest of your (copious amounts of) applet-
    based code is just a distraction at this point.
    No, I have no clues as to your possible error. Though the first step that I would take, if this were my code, would be to isolate the part
    that's giving me troubles and get it as simple as possible - i.e. make
    sure I can write a console app that plays the midi file I want. Then I
    would build up from there - i.e. dump that into an applet with one
    button that does that.
    Good luck to you
    Lee

  • No such method error

    Hi, I'm getting a message that reads: exception occured during event dispatching: java.lang.nosuchmethod error.
    Here's some of my code for a game of blackjack when I press the start game button everything works fine the textfield displays 2 cards and it gives me a total for the 2 cards.
    But when I press the hit button that's when I get the nosuchmethod error.
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*; // added for event handling
    public class Blackjack_Frame
            final JFrame aFrame = new JFrame("MMSD 3610 Blackjack");
            Container contentPane = aFrame.getContentPane();
            aFrame.setSize(450, 200);
         // We don't need to set the layout manager for
         // a JFrame's content pane - it is automatically a
         // BorderLayout by default!
         // Technique for centering a frame on the screen.
         Dimension frameSize = aFrame.getSize();
         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
         aFrame.setLocation((screenSize.width - frameSize.width)/2,
                     (screenSize.height - frameSize.height)/2);
         aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         // Let's create the leftmost panel.  Note that we use names
         // for our components that are somewhat self-documenting.
         JPanel leftPanel = new JPanel();
         // We'll assign the panel a GridLayout (it would otherwise
         // default to FlowLayout).
         leftPanel.setLayout(new GridLayout(3, 1));
         // We'll create two labels on the fly and hand them
         // to the panel; there's no need to bother maintaining
         // a named handle on any of these labels.
         leftPanel.add(new JLabel("BLACKJACK ! :"));
         leftPanel.add(new JLabel("Your hand:"));
         leftPanel.add(new JLabel("Dealers hand:"));
         // Now, we'll attach the panel to the frame.
         contentPane.add(leftPanel, BorderLayout.WEST);
         // Repeat the process with the center panel.
         JPanel centerPanel = new JPanel();
         centerPanel.setLayout(new GridLayout(3, 1));
         // Here we make the TextField un-editable to the users
         // but it is enabled so we can display the cards
            // to the user.
           final JTextField input1TextField = new JTextField(30);
         input1TextField.setEditable(false);
         input1TextField.setEnabled(true);
         JTextField input2TextField = new JTextField(30);
         input2TextField.setEditable(false);
         input2TextField.setEnabled(true);
         JTextField input3TextField = new JTextField(30);
         input3TextField.setEditable(false);
         input3TextField.setEnabled(true);
         centerPanel.add(input1TextField);
         centerPanel.add(input2TextField);
         centerPanel.add(input3TextField);
         contentPane.add(centerPanel, BorderLayout.CENTER);
         // This panel displays all the buttons.
         JPanel buttonPanel = new JPanel();
         buttonPanel.setLayout(new GridLayout(1, 4));
         JButton hitButton = new JButton("HIT");
         JButton stayButton = new JButton("STAY");
         JButton endGameButton = new JButton("END GAME");
         JButton startGameButton = new JButton("START GAME");
         buttonPanel.add(hitButton);
         buttonPanel.add(stayButton);
         buttonPanel.add(endGameButton);
         buttonPanel.add(startGameButton);
         contentPane.add(buttonPanel, BorderLayout.SOUTH);
         // I tried using named inner classes first but didn't have much
         // luck so I had better success with anonymous inner classes.
         // First, we create a listener object to respond to
         // the "START GAME" button.
               ActionListener listen = new ActionListener()
           public void actionPerformed(ActionEvent e)
             CardDeck deck = new CardDeck();
                  deck.shuffle();
                  Hand myHand = deck.dealHand(2);
                  Hand yourHand = deck.dealHand(2);
                 input1TextField.setText(" " + (myHand) +
                     ("  Dealer's hand has " + myHand.getBlackjackHandValue()));
         };  // After doing some research I found I had to use this weird };
                // syntax because I needed to terminate the single statement
                // " ActionListener listen = new ActionListener() "
             // ... and then we register this listener with the appropriate
             // component.
             startGameButton.addActionListener(listen);     
         // We do the same for the "HIT" button.
         listen = new ActionListener()
              public void actionPerformed(ActionEvent e)
               CardDeck deck = new CardDeck();
               deck.shuffle();
               Hand myHand1 = deck.dealHand(1);
                  Card newCard = myHand1.getCard();
    // I seem to be getting the error right here.
                  Hand myHand = newCard.addCardBackInHand();
                  input1TextField.setText(" " + (myHand) +
                     ("  Dealer's hand has " + myHand.getBlackjackHandValue()));
              hitButton.addActionListener(listen);
         // We do the same for the "END GAME" button.
         listen = new ActionListener()
              public void actionPerformed(ActionEvent e)
               aFrame.dispose();
               System.exit(0);
              endGameButton.addActionListener(listen);
           aFrame.setVisible(true);
    // Class defining a hand of cards and we use the ever so helpful Stack to store the hand.
    import java.util.*;
    // The compiler provides us with a default constructor and creates a hand object, which
    // contains a empty Stack or empty hand. We then add a card object by pushing it into
    // our Stack or hand.
    class Hand
      private Stack hand = new Stack();   // Stores the cards in the hand
      public void add(Card card)
        hand.push(card);
    // This method pulls a single card from the Hand.
      public Card getCard()
        return (Card)hand.pop();
    // This method returns the number of cards that are in the hand.
      public int getCardCount()
        return hand.size();
    // This method pushes the hit card back into the hand for display purposes.
       public Hand addCardBackInHand()
         return (Card)hand.push();
      // We need a way to display our hand so we use the toString() method again to display
      // a string representation of our hand object. Here I found another helpful little
      // item called the Iterator it allows me to deal one card at a time and store it in
      // my Stack hand. We also use a buffered stream because transferring data in a buffer
      // is a lot more efficient because it stores chunks of data in memory before
      // transferring the data to or from an external device.
      public String toString()
        Iterator cards = hand.iterator();
        StringBuffer str = new StringBuffer();
        while(cards.hasNext())
          str.append(" "+ (Card)cards.next());
        return str.toString();
      public int getBlackjackHandValue()
        int val;       // Value of the hand.
        boolean ace;   // This will be set to true if we have an ace in our hand.
        int cards;     // Number of cards in the hand.
    // Here we initalize our variables with a value.
        val = 0;
        ace = false;
        cards = getCardCount();
    // Here we use a for loop to loop thru the cards in the hand and then
    // determine a value for those cards.
        for (int i = 0; i < cards; i++)
          int cardVal;                // The value of the card.
          Card card;
          card = getCard();           // Get a card from the hand.
          cardVal = card.getValue();  // Get the value of the card which should
                                      // be between 1 to 13.
          if (cardVal > 10)
            cardVal = 10;  // This assigns a value of 10 to the face cards
          if (cardVal == 1)
            ace = true;   // We have an ace in our Blackjack hand.
            val = val + cardVal;
    // Since an ace can either be a 1 or 11 in blackjack we have to make
    // allowances for that so, if we have an ace and the value of the hand
    // is less than or equal to 21 we do that by adding an extra 10 points
    // to val.
          if (ace == true && val + 10 <= 21)
             val = val + 10;
          return val;  // the value of our blackjack hand.
    }Thanks...........gee mann

    Its hard to say without seeing the Classes CardDeck and Card... stilll let me guess
         listen = new ActionListener()
    public void actionPerformed(ActionEvent e)
         CardDeck deck = new CardDeck();
         deck.shuffle();
         Hand myHand1 = deck.dealHand(1);
    Card newCard = myHand1.getCard();
    // I seem to be getting the error right here.
    Hand myHand = newCard.addCardBackInHand();Are u sure the method addCardBackInHand() is in the class "Card"... I saw a method by that name in the class Hand.... Am i right?

  • NullPointerException Error when loading a JPG file...

    I started a new job recently and have enherited some new JAVA code. I understand most of what is going on here (with the help of several good books). I can compile the code (with this code snippit) with no errors, but I get a NullPointerException during runtime. The error comes when I try to load "images/plasticslogo.jpg". The filename and path all appear to be correct. There is a Java Package created (called images) with the image in there. I have come to the end of my resources to resolve this problem. Can anyone help???
    ERROR MESSAGE:
    java.lang.NullPointerException
            at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
            at lhp.LHPSplashScreen.initComponents(LHPSplashScreen.java:64)
            at lhp.LHPSplashScreen.<init>(LHPSplashScreen.java:11)
            at lhp.LHPEventViewer.main(LHPEventViewer.java:71)
    END ERROR MESSAGE
    private void initComponents() {
            pnlMain = new JPanel();
            lblTitle = new JLabel();
            lblVerLabel = new JLabel();
            lblVersion = new JLabel();
            lblAuthor = new JLabel();
            lblImage = new JLabel();
            getContentPane().setLayout(null);
            setBackground(java.awt.Color.white);
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    exitForm(evt);
            pnlMain.setLayout(null);
            pnlMain.setBackground(new java.awt.Color(255, 255, 255));
            pnlMain.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2));
            lblTitle.setFont(new java.awt.Font("Arial", 1, 18));
            lblTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            lblTitle.setText("Line Hour Productivity");
            pnlMain.add(lblTitle);
            lblTitle.setBounds(0, 70, 200, 22);
            lblVerLabel.setFont(new java.awt.Font("Arial", 0, 12));
            lblVerLabel.setText("Version:");
            pnlMain.add(lblVerLabel);
            lblVerLabel.setBounds(3, 87, 50, 20);
            lblVersion.setFont(new java.awt.Font("Arial", 0, 12));
            pnlMain.add(lblVersion);
            lblVersion.setBounds(50, 87, 50, 20);
            lblAuthor.setFont(new java.awt.Font("Tahoma", 0, 10));
            lblAuthor.setText("Written By: Granite Services, Inc.");
            pnlMain.add(lblAuthor);
            lblAuthor.setBounds(100, 87, 156, 20);
    lblImage.setIcon(new ImageIcon(getClass().getResource("images/plasticslogo.jpg")));       
            pnlMain.add(lblImage);
            lblImage.setBounds(2, 10, 198, 64);
            getContentPane().add(pnlMain);
            pnlMain.setBounds(0, 0, 256, 107);
        }

    Hiwa,
    Please note that the code usesClass.getResource().
    This 'small change' is not necessary for a simple
    resource stored in a subdirectory.Actually, if you dont add the '/' prefix, then the package name will the
    prepended. i.e it would search for the image file under abc.xyz. images
    package, where abc.xyz is the package name for the current class.
    Javadoc for Class.getStream..
    public URL getResource(String name)
    Finds a resource with a given name. This method returns null if no resource with this name is found. The rules for searching resources associated with a given class are implemented by the * defining class loader of the class.
    This method delegates the call to its class loader, after making these changes to the resource name: if the resource name starts with "/", it is unchanged; otherwise, the package name is prepended to the resource name after converting "." to "/". If this object was loaded by the bootstrap loader, the call is delegated to ClassLoader.getSystemResource.

  • Why is this an error???  I don't understand why it is... Help Please

    Hi,
    Ok, I'll preface this by saying there's a lotta code pasted in here but it really quite an easy question, I just need to post all the code so you understand where what came from.
    Now.............the question I'm trying to do is to create an applet that has 2 buttons -- each button when clicked opens an application (one is a simple calculator, the other a Mortgage calculation app). When you click one of the buttons (calc or mortgage), that app opens infront of the 2 button menu so its in "focus". The button on the 2 button menu then switches to a "hide app X" button (ie: "Mortgage", changes to "Hide Mortgage"). Thus if you click the hide button, the app that was opened is hidden, and then that "hide" button switches back to the original "app X" button. Pretty simple.
    Now, I have from my text book an example that does exactly this, with the simple calculator already in it, and with another app (a traffic light thing) where the Mortgage should be in my final product. I also already have the Mortgage applet I need to insert from another book example in place of that Traffic Light portion.
    Now, common sense would dictate that I should be able to just copy my code for the Mortgage applet into the example that has the 2 button menu structure, and overwrite the code I want to get rid of (the traffic light) with the mortgage code & rename the menu buttons. Right?? A simple switch of one thing for another... but therein lies my problem.
    I copied all the Mortgage code in correctly over the traffic lights, switched the button names, tried to compile it but I get one error....
    Exercise12_17.java:52: cannot resolve symbol
    symbol  : method pack ()
    location: class MortgageApplet
            mortgageAppletFrame.pack();I don't understand why..... mortgageAppletFrame.pack(); was a simple rewrite from lightsFrame.pack(); like every other line...... it should work. I've gone over it for 2 days......... Anyone know why it comes up as an error???
    Below, in order going down is (1)my code with the 1 error I can't solve, (2)the original menu example I tried to edit, and (3)the Mortgage app code...........
    Does anyone know what my error is?? Help or a hint would be greatly appreciated........ Thanks.
    My erroring app.......
    // Exercise12_17.java: Create multiple windows
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.TitledBorder;
    public class Exercise12_17 extends JFrame implements ActionListener {
      // Declare and create a frame: an instance of MenuDemo
      MenuDemo calcFrame = new MenuDemo();
      // Declare and create a frame: an instance of RadioButtonDemo
      MortgageApplet mortgageAppletFrame = new MortgageApplet();
      // Declare two buttons for displaying frames
      private JButton jbtCalc;
      private JButton jbtMortgage;
      public static void main(String[] args) {
        Exercise12_17 frame = new Exercise12_17();
        frame.setSize( 400, 70 );
        frame.setTitle("Exercise 11.8: Multiple Windows Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
      public Exercise12_17() {
        // Add buttons to the main frame
        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(jbtCalc = new JButton("Simple Calculator"));
         getContentPane().add(jbtMortgage = new JButton("Mortgage"));
        // Register the main frame as listener for the buttons
        jbtCalc.addActionListener(this);
         jbtMortgage.addActionListener(this);
      public void actionPerformed(ActionEvent e) {
        String arg = e.getActionCommand();
        if (e.getSource() instanceof JButton)
          if ("Simple Calculator".equals(arg)) {
            //show the MenuDemo frame
            jbtCalc.setText("Hide Simple Calculator");
            calcFrame.pack();
            calcFrame.setVisible(true);
          else if ("Hide Simple Calculator".equals(arg)) {
            calcFrame.setVisible(false);
            jbtCalc.setText("Simple Calculator");
          else if ("Mortgage".equals(arg)) {
            //show the CheckboxGroup frame
            mortgageAppletFrame.pack();
            jbtMortgage.setText("Hide Mortgage");
            mortgageAppletFrame.setVisible(true);
          else if ("Hide Mortgage".equals(arg)) {
            mortgageAppletFrame.setVisible(false);
            jbtMortgage.setText("Mortgage");
      class MortgageApplet extends JApplet
      implements ActionListener {
      // Declare and create text fields for interest rate
      // year, loan amount, monthly payment, and total payment
      private JTextField jtfAnnualInterestRate = new JTextField();
      private JTextField jtfNumOfYears = new JTextField();
      private JTextField jtfLoanAmount = new JTextField();
      private JTextField jtfMonthlyPayment = new JTextField();
      private JTextField jtfTotalPayment = new JTextField();
      // Declare and create a Compute Mortgage button
      private JButton jbtComputeMortgage = new JButton("Compute Mortgage");
      /** Initialize user interface */
      public void init() {
        // Set properties on the text fields
        jtfMonthlyPayment.setEditable(false);
        jtfTotalPayment.setEditable(false);
        // Right align text fields
        jtfAnnualInterestRate.setHorizontalAlignment(JTextField.RIGHT);
        jtfNumOfYears.setHorizontalAlignment(JTextField.RIGHT);
        jtfLoanAmount.setHorizontalAlignment(JTextField.RIGHT);
        jtfMonthlyPayment.setHorizontalAlignment(JTextField.RIGHT);
        jtfTotalPayment.setHorizontalAlignment(JTextField.RIGHT);
        // Panel p1 to hold labels and text fields
        JPanel p1 = new JPanel();
        p1.setLayout(new GridLayout(5, 2));
        p1.add(new Label("Annual Interest Rate"));
        p1.add(jtfAnnualInterestRate);
        p1.add(new Label("Number of Years"));
        p1.add(jtfNumOfYears);
        p1.add(new Label("Loan Amount"));
        p1.add(jtfLoanAmount);
        p1.add(new Label("Monthly Payment"));
        p1.add(jtfMonthlyPayment);
        p1.add(new Label("Total Payment"));
        p1.add(jtfTotalPayment);
        p1.setBorder(new
          TitledBorder("Enter interest rate, year and loan amount"));
        // Panel p2 to hold the button
        JPanel p2 = new JPanel();
        p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
        p2.add(jbtComputeMortgage);
        // Add the components to the applet
        getContentPane().add(p1, BorderLayout.CENTER);
        getContentPane().add(p2, BorderLayout.SOUTH);
        // Register listener
        jbtComputeMortgage.addActionListener(this);
      /** Handle the "Compute Mortgage" button */
      public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jbtComputeMortgage) {
          // Get values from text fields
          double interest = (Double.valueOf(
            jtfAnnualInterestRate.getText())).doubleValue();
          int year =
            (Integer.valueOf(jtfNumOfYears.getText())).intValue();
          double loan =
            (Double.valueOf(jtfLoanAmount.getText())).doubleValue();
          // Create a mortgage object
          Mortgage m = new Mortgage(interest, year, loan);
          // Display monthly payment and total payment
          jtfMonthlyPayment.setText(String.valueOf(m.monthlyPayment()));
          jtfTotalPayment.setText(String.valueOf(m.totalPayment()));
    class MenuDemo extends JFrame implements ActionListener {
      // Text fields for Number 1, Number 2, and Result
      private JTextField jtfNum1, jtfNum2, jtfResult;
      // Buttons "Add", "Subtract", "Multiply" and "Divide"
      private JButton jbtAdd, jbtSub, jbtMul, jbtDiv;
      // Menu items "Add", "Subtract", "Multiply","Divide" and "Close"
      private JMenuItem jmiAdd, jmiSub, jmiMul, jmiDiv, jmiClose;
      /** Main method */
      public static void main(String[] args) {
        MenuDemo frame = new MenuDemo();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
      /** Default constructor */
      public MenuDemo() {
        setTitle("Menu Demo");
        // Create menu bar
        JMenuBar jmb = new JMenuBar();
        // Set menu bar to the frame
        setJMenuBar(jmb);
        // Add menu "Operation" to menu bar
        JMenu operationMenu = new JMenu("Operation");
        operationMenu.setMnemonic('O');
        jmb.add(operationMenu);
        // Add menu "Exit" in menu bar
        JMenu exitMenu = new JMenu("Exit");
        exitMenu.setMnemonic('E');
        jmb.add(exitMenu);
        // Add menu items with mnemonics to menu "Operation"
        operationMenu.add(jmiAdd= new JMenuItem("Add", 'A'));
        operationMenu.add(jmiSub = new JMenuItem("Subtract", 'S'));
        operationMenu.add(jmiMul = new JMenuItem("Multiply", 'M'));
        operationMenu.add(jmiDiv = new JMenuItem("Divide", 'D'));
        exitMenu.add(jmiClose = new JMenuItem("Close", 'C'));
        // Set keyboard accelerators
        jmiAdd.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
        jmiSub.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
        jmiMul.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK));
        jmiDiv.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        // Panel p1 to hold text fields and labels
        JPanel p1 = new JPanel();
        p1.setLayout(new FlowLayout());
        p1.add(new JLabel("Number 1"));
        p1.add(jtfNum1 = new JTextField(3));
        p1.add(new JLabel("Number 2"));
        p1.add(jtfNum2 = new JTextField(3));
        p1.add(new JLabel("Result"));
        p1.add(jtfResult = new JTextField(4));
        jtfResult.setEditable(false);
        // Panel p2 to hold buttons
        JPanel p2 = new JPanel();
        p2.setLayout(new FlowLayout());
        p2.add(jbtAdd = new JButton("Add"));
        p2.add(jbtSub = new JButton("Subtract"));
        p2.add(jbtMul = new JButton("Multiply"));
        p2.add(jbtDiv = new JButton("Divide"));
        // Add panels to the frame
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(p1, BorderLayout.CENTER);
        getContentPane().add(p2, BorderLayout.SOUTH);
        // Register listeners
        jbtAdd.addActionListener(this);
        jbtSub.addActionListener(this);
        jbtMul.addActionListener(this);
        jbtDiv.addActionListener(this);
        jmiAdd.addActionListener(this);
        jmiSub.addActionListener(this);
        jmiMul.addActionListener(this);
        jmiDiv.addActionListener(this);
        jmiClose.addActionListener(this);
      /** Handle ActionEvent from buttons and menu items */
      public void actionPerformed(ActionEvent e) {
        String actionCommand = e.getActionCommand();
        // Handle button events
        if (e.getSource() instanceof JButton) {
          if ("Add".equals(actionCommand))
            calculate('+');
          else if ("Subtract".equals(actionCommand))
            calculate('-');
          else if ("Multiply".equals(actionCommand))
            calculate('*');
          else if ("Divide".equals(actionCommand))
            calculate('/');
        else if (e.getSource() instanceof JMenuItem) {
          // Handle menu item events
          if ("Add".equals(actionCommand))
            calculate('+');
          else if ("Subtract".equals(actionCommand))
            calculate('-');
          else if ("Multiply".equals(actionCommand))
            calculate('*');
          else if ("Divide".equals(actionCommand))
            calculate('/');
          else if ("Close".equals(actionCommand))
            System.exit(0);
      /** Calculate and show the result in jtfResult */
      private void calculate(char operator) {
        // Obtain Number 1 and Number 2
        int num1 = (Integer.parseInt(jtfNum1.getText().trim()));
        int num2 = (Integer.parseInt(jtfNum2.getText().trim()));
        int result = 0;
        // Perform selected operation
        switch (operator) {
          case '+': result = num1 + num2;
                    break;
          case '-': result = num1 - num2;
                    break;
          case '*': result = num1 * num2;
                    break;
          case '/': result = num1 / num2;
        // Set result in jtfResult
        jtfResult.setText(String.valueOf(result));
    Original 2 button menu example....
    // Exercise11_8.java: Create multiple windows
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Exercise11_8 extends JFrame implements ActionListener {
      // Declare and create a frame: an instance of MenuDemo
      MenuDemo calcFrame = new MenuDemo();
      // Declare and create a frame: an instance of RadioButtonDemo
      RadioButtonDemo lightsFrame = new RadioButtonDemo();
      // Declare two buttons for displaying frames
      private JButton jbtCalc;
      private JButton jbtLights;
      public static void main(String[] args) {
        Exercise11_8 frame = new Exercise11_8();
        frame.setSize( 400, 70 );
        frame.setTitle("Exercise 11.8: Multiple Windows Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
      public Exercise11_8() {
        // Add buttons to the main frame
        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(jbtCalc = new JButton("Simple Calculator"));
        getContentPane().add(jbtLights = new JButton("Traffic Lights"));
        // Register the main frame as listener for the buttons
        jbtCalc.addActionListener(this);
        jbtLights.addActionListener(this);
      public void actionPerformed(ActionEvent e) {
        String arg = e.getActionCommand();
        if (e.getSource() instanceof JButton)
          if ("Simple Calculator".equals(arg)) {
            //show the MenuDemo frame
            jbtCalc.setText("Hide Simple Calculator");
            calcFrame.pack();
            calcFrame.setVisible(true);
          else if ("Hide Simple Calculator".equals(arg)) {
            calcFrame.setVisible(false);
            jbtCalc.setText("Simple Calculator");
          else if ("Traffic Lights".equals(arg)) {
            //show the CheckboxGroup frame
            lightsFrame.pack();
            jbtLights.setText("Hide Traffic Lights");
            lightsFrame.setVisible(true);
          else if ("Hide Traffic Lights".equals(arg)) {
            lightsFrame.setVisible(false);
            jbtLights.setText("Traffic Lights");
         class RadioButtonDemo extends JFrame
      implements ItemListener {
      // Declare radio buttons
      private JRadioButton jrbRed, jrbYellow, jrbGreen;
      // Declare a radio button group
      private ButtonGroup btg = new ButtonGroup();
      // Declare a traffic light display panel
      private Light light;
      /** Main method */
      public static void main(String[] args) {
        RadioButtonDemo frame = new RadioButtonDemo();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(250, 170);
        frame.setVisible(true);
      /** Default constructor */
      public RadioButtonDemo() {
        setTitle("RadioButton Demo");
        // Add traffic light panel to panel p1
        JPanel p1 = new JPanel();
        p1.setSize(200, 200);
        p1.setLayout(new FlowLayout(FlowLayout.CENTER));
        light = new Light();
        light.setSize(40, 90);
        p1.add(light);
        // Put the radio button in Panel p2
        JPanel p2 = new JPanel();
        p2.setLayout(new FlowLayout());
        p2.add(jrbRed = new JRadioButton("Red", true));
        p2.add(jrbYellow = new JRadioButton("Yellow", false));
        p2.add(jrbGreen = new JRadioButton("Green", false));
        // Set keyboard mnemonics
        jrbRed.setMnemonic('R');
        jrbYellow.setMnemonic('Y');
        jrbGreen.setMnemonic('G');
        // Group radio buttons
        btg.add(jrbRed);
        btg.add(jrbYellow);
        btg.add(jrbGreen);
        // Place p1 and p2 in the frame
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(p1, BorderLayout.CENTER);
        getContentPane().add(p2, BorderLayout.SOUTH);
        // Register listeners for check boxes
        jrbRed.addItemListener(this);
        jrbYellow.addItemListener(this);
        jrbGreen.addItemListener(this);
      /** Handle checkbox events */
      public void itemStateChanged(ItemEvent e) {
        if (jrbRed.isSelected())
          light.turnOnRed(); // Set red light
        if (jrbYellow.isSelected())
          light.turnOnYellow(); // Set yellow light
        if (jrbGreen.isSelected())
          light.turnOnGreen(); // Set green light
    // Three traffic lights shown in a panel
    class Light extends JPanel {
      private boolean red;
      private boolean yellow;
      private boolean green;
      /** Default constructor */
      public Light() {
        turnOnGreen();
      /** Set red light on */
      public void turnOnRed() {
        red = true;
        yellow = false;
        green = false;
        repaint();
      /** Set yellow light on */
      public void turnOnYellow() {
        red = false;
        yellow = true;
        green = false;
        repaint();
      /** Set green light on */
      public void turnOnGreen() {
        red = false;
        yellow = false;
        green = true;
        repaint();
      /** Display lights */
      public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (red) {
          g.setColor(Color.red);
          g.fillOval(10, 10, 20, 20);
          g.setColor(Color.black);
          g.drawOval(10, 35, 20, 20);
          g.drawOval(10, 60, 20, 20);
          g.drawRect(5, 5, 30, 80);
        else if (yellow) {
          g.setColor(Color.yellow);
          g.fillOval(10, 35, 20, 20);
          g.setColor(Color.black);
          g.drawRect(5, 5, 30, 80);
          g.drawOval(10, 10, 20, 20);
          g.drawOval(10, 60, 20, 20);
        else if (green) {
          g.setColor(Color.green);
          g.fillOval(10, 60, 20, 20);
          g.setColor(Color.black);
          g.drawRect(5, 5, 30, 80);
          g.drawOval(10, 10, 20, 20);
          g.drawOval(10, 35, 20, 20);
        else {
          g.setColor(Color.black);
          g.drawRect(5, 5, 30, 80);
          g.drawOval(10, 10, 20, 20);
          g.drawOval(10, 35, 20, 20);
          g.drawOval(10, 60, 20, 20);
      /** Set preferred size */
      public Dimension getPreferredSize() {
        return new Dimension(40, 90);
    class MenuDemo extends JFrame implements ActionListener {
      // Text fields for Number 1, Number 2, and Result
      private JTextField jtfNum1, jtfNum2, jtfResult;
      // Buttons "Add", "Subtract", "Multiply" and "Divide"
      private JButton jbtAdd, jbtSub, jbtMul, jbtDiv;
      // Menu items "Add", "Subtract", "Multiply","Divide" and "Close"
      private JMenuItem jmiAdd, jmiSub, jmiMul, jmiDiv, jmiClose;
      /** Main method */
      public static void main(String[] args) {
        MenuDemo frame = new MenuDemo();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
      /** Default constructor */
      public MenuDemo() {
        setTitle("Menu Demo");
        // Create menu bar
        JMenuBar jmb = new JMenuBar();
        // Set menu bar to the frame
        setJMenuBar(jmb);
        // Add menu "Operation" to menu bar
        JMenu operationMenu = new JMenu("Operation");
        operationMenu.setMnemonic('O');
        jmb.add(operationMenu);
        // Add menu "Exit" in menu bar
        JMenu exitMenu = new JMenu("Exit");
        exitMenu.setMnemonic('E');
        jmb.add(exitMenu);
        // Add menu items with mnemonics to menu "Operation"
        operationMenu.add(jmiAdd= new JMenuItem("Add", 'A'));
        operationMenu.add(jmiSub = new JMenuItem("Subtract", 'S'));
        operationMenu.add(jmiMul = new JMenuItem("Multiply", 'M'));
        operationMenu.add(jmiDiv = new JMenuItem("Divide", 'D'));
        exitMenu.add(jmiClose = new JMenuItem("Close", 'C'));
        // Set keyboard accelerators
        jmiAdd.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
        jmiSub.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
        jmiMul.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK));
        jmiDiv.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        // Panel p1 to hold text fields and labels
        JPanel p1 = new JPanel();
        p1.setLayout(new FlowLayout());
        p1.add(new JLabel("Number 1"));
        p1.add(jtfNum1 = new JTextField(3));
        p1.add(new JLabel("Number 2"));
        p1.add(jtfNum2 = new JTextField(3));
        p1.add(new JLabel("Result"));
        p1.add(jtfResult = new JTextField(4));
        jtfResult.setEditable(false);
        // Panel p2 to hold buttons
        JPanel p2 = new JPanel();
        p2.setLayout(new FlowLayout());
        p2.add(jbtAdd = new JButton("Add"));
        p2.add(jbtSub = new JButton("Subtract"));
        p2.add(jbtMul = new JButton("Multiply"));
        p2.add(jbtDiv = new JButton("Divide"));
        // Add panels to the frame
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(p1, BorderLayout.CENTER);
        getContentPane().add(p2, BorderLayout.SOUTH);
        // Register listeners
        jbtAdd.addActionListener(this);
        jbtSub.addActionListener(this);
        jbtMul.addActionListener(this);
        jbtDiv.addActionListener(this);
        jmiAdd.addActionListener(this);
        jmiSub.addActionListener(this);
        jmiMul.addActionListener(this);
        jmiDiv.addActionListener(this);
        jmiClose.addActionListener(this);
      /** Handle ActionEvent from buttons and menu items */
      public void actionPerformed(ActionEvent e) {
        String actionCommand = e.getActionCommand();
        // Handle button events
        if (e.getSource() instanceof JButton) {
          if ("Add".equals(actionCommand))
            calculate('+');
          else if ("Subtract".equals(actionCommand))
            calculate('-');
          else if ("Multiply".equals(actionCommand))
            calculate('*');
          else if ("Divide".equals(actionCommand))
            calculate('/');
        else if (e.getSource() instanceof JMenuItem) {
          // Handle menu item events
          if ("Add".equals(actionCommand))
            calculate('+');
          else if ("Subtract".equals(actionCommand))
            calculate('-');
          else if ("Multiply".equals(actionCommand))
            calculate('*');
          else if ("Divide".equals(actionCommand))
            calculate('/');
          else if ("Close".equals(actionCommand))
            System.exit(0);
      /** Calculate and show the result in jtfResult */
      private void calculate(char operator) {
        // Obtain Number 1 and Number 2
        int num1 = (Integer.parseInt(jtfNum1.getText().trim()));
        int num2 = (Integer.parseInt(jtfNum2.getText().trim()));
        int result = 0;
        // Perform selected operation
        switch (operator) {
          case '+': result = num1 + num2;
                    break;
          case '-': result = num1 - num2;
                    break;
          case '*': result = num1 * num2;
                    break;
          case '/': result = num1 / num2;
        // Set result in jtfResult
        jtfResult.setText(String.valueOf(result));
    Mortgage applet code....
    // MortgageApplet.java: Applet for computing mortgage payments
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.TitledBorder;
    public class MortgageApplet extends JApplet
      implements ActionListener {
      // Declare and create text fields for interest rate
      // year, loan amount, monthly payment, and total payment
      private JTextField jtfAnnualInterestRate = new JTextField();
      private JTextField jtfNumOfYears = new JTextField();
      private JTextField jtfLoanAmount = new JTextField();
      private JTextField jtfMonthlyPayment = new JTextField();
      private JTextField jtfTotalPayment = new JTextField();
      // Declare and create a Compute Mortgage button
      private JButton jbtComputeMortgage = new JButton("Compute Mortgage");
      /** Initialize user interface */
      public void init() {
        // Set properties on the text fields
        jtfMonthlyPayment.setEditable(false);
        jtfTotalPayment.setEditable(false);
        // Right align text fields
        jtfAnnualInterestRate.setHorizontalAlignment(JTextField.RIGHT);
        jtfNumOfYears.setHorizontalAlignment(JTextField.RIGHT);
        jtfLoanAmount.setHorizontalAlignment(JTextField.RIGHT);
        jtfMonthlyPayment.setHorizontalAlignment(JTextField.RIGHT);
        jtfTotalPayment.setHorizontalAlignment(JTextField.RIGHT);
        // Panel p1 to hold labels and text fields
        JPanel p1 = new JPanel();
        p1.setLayout(new GridLayout(5, 2));
        p1.add(new Label("Annual Interest Rate"));
        p1.add(jtfAnnualInterestRate);
        p1.add(new Label("Number of Years"));
        p1.add(jtfNumOfYears);
        p1.add(new Label("Loan Amount"));
        p1.add(jtfLoanAmount);
        p1.add(new Label("Monthly Payment"));
        p1.add(jtfMonthlyPayment);
        p1.add(new Label("Total Payment"));
        p1.add(jtfTotalPayment);
        p1.setBorder(new
          TitledBorder("Enter interest rate, year and loan amount"));
        // Panel p2 to hold the button
        JPanel p2 = new JPanel();
        p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
        p2.add(jbtComputeMortgage);
        // Add the components to the applet
        getContentPane().add(p1, BorderLayout.CENTER);
        getContentPane().add(p2, BorderLayout.SOUTH);
        // Register listener
        jbtComputeMortgage.addActionListener(this);
      /** Handle the "Compute Mortgage" button */
      public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jbtComputeMortgage) {
          // Get values from text fields
          double interest = (Double.valueOf(
            jtfAnnualInterestRate.getText())).doubleValue();
          int year =
            (Integer.valueOf(jtfNumOfYears.getText())).intValue();
          double loan =
            (Double.valueOf(jtfLoanAmount.getText())).doubleValue();
          // Create a mortgage object
          Mortgage m = new Mortgage(interest, year, loan);
          // Display monthly payment and total payment
          jtfMonthlyPayment.setText(String.valueOf(m.monthlyPayment()));
          jtfTotalPayment.setText(String.valueOf(m.totalPayment()));
    }

    Does it have to be an applet?
    If you want the same behaviour as in the code with traffic lights, change
    class MortgageApplet extends JApplet implements ActionListener {
    to
    class MortgageApplet extends JFrame implements ActionListener {
    and change
    public void init() {
    to
    public MortgageApplet() {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Infinite loop error after using Java Sun Tutorial for Learning Swing

    I have been attempting to create a GUI following Sun's learning swing by example (example two): http://java.sun.com/docs/books/tutorial/uiswing/learn/example2.html
    In particular, the following lines were used almost word-for-word to avoid a non-static method call problem:
    SwingApplication app = new SwingApplication();
    Component contents = app.createComponents();
    frame.getContentPane().add(contents, BorderLayout.CENTER);I believe that I am accidentally creating a new instance of the gui class repeatedly (since it shows new GUI's constantly and then crashes my computer), possibly because I am creating an instance in the main class, but creating another instance in the GUI itself. I am not sure how to avoid this, given that the tutorials I have seen do not deal with having a main class as well as the GUI. I have googled (a nice new verb) this problem and have been through the rest of the swing by example tutorials, although I am sure I am simply missing a website that details this problem. Any pointers on websites to study to avoid this problem would be appreciated.
    Thanks for your time-
    Danielle
    /** GUI for MicroMerger program
    * Created July/06 at IARC
    *@ author Danielle
    package micromerger;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.swing.JFileChooser;
    import java.lang.Object;
    public class MGui
         private static File inputFile1, inputFile2;
         private static File sfile1, sfile2;
         private static String file1Name, file2Name;
         private String currFile1, currFile2;
         private JButton enterFile1, enterFile2;
         private JLabel enterLabel1, enterLabel2;
         private static MGui app;
         public MGui()
              javax.swing.SwingUtilities.invokeLater(new Runnable()
                   public void run()
                        System.out.println("About to run create GUI method");
                        app = new MGui();
                        System.out.println("declared a new MGui....");
                        createAndShowGUI();
         //initialize look and feel of program
         private static void initLookAndFeel() {
            String lookAndFeel = null;
         lookAndFeel = UIManager.getSystemLookAndFeelClassName();
         try
              UIManager.setLookAndFeel(lookAndFeel);
         catch (ClassNotFoundException e) {
                    System.err.println("Couldn't find class for specified look and feel:"
                                       + lookAndFeel);
                    System.err.println("Did you include the L&F library in the class path?");
                    System.err.println("Using the default look and feel.");
                } catch (UnsupportedLookAndFeelException e) {
                    System.err.println("Can't use the specified look and feel ("
                                       + lookAndFeel
                                       + ") on this platform.");
                    System.err.println("Using the default look and feel.");
                } catch (Exception e) {
                    System.err.println("Couldn't get specified look and feel ("
                                       + lookAndFeel
                                       + "), for some reason.");
                    System.err.println("Using the default look and feel.");
                    e.printStackTrace();
         // Make Components--
         private Component createLeftComponents()
              // Make panel-- grid layout
         JPanel pane = new JPanel(new GridLayout(0,1));
            //Add label
            JLabel welcomeLabel = new JLabel("Welcome to MicroMerger.  Please Enter your files.");
            pane.add(welcomeLabel);
         //Add buttons to enter files:
         enterFile1 = new JButton("Please click to enter the first file.");
         enterFile1.addActionListener(new enterFile1Action());
         pane.add(enterFile1);
         enterLabel1 = new JLabel("");
         pane.add(enterLabel1);
         enterFile2 = new JButton("Please click to enter the second file.");
         enterFile2.addActionListener(new enterFile2Action());
         pane.add(enterFile2);
         enterLabel2 = new JLabel("");
         pane.add(enterLabel2);
         return pane;
         /** Make GUI:
         private static void createAndShowGUI()
         System.out.println("Creating a gui...");
            JFrame.setDefaultLookAndFeelDecorated(true);
            //Create and set up the window.
            JFrame frame = new JFrame("MicroMerger");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         //Add stuff to the frame
         //MGui app = new MGui();
         Component leftContents = app.createLeftComponents();
         frame.getContentPane().add(leftContents, BorderLayout.WEST);
            //Display the window.
            frame.pack();
            frame.setVisible(true);
    private class enterFile1Action implements ActionListener
         public void actionPerformed(ActionEvent evt)
              JFileChooser chooser = new JFileChooser();
              int rVal = chooser.showOpenDialog(enterFile1);
              if(rVal == JFileChooser.APPROVE_OPTION)
                   inputFile1 = chooser.getSelectedFile();
                   PrintWriter outputStream;
                   file1Name = inputFile1.getName();
                   enterLabel1.setText(file1Name);
    private class enterFile2Action implements ActionListener
         public void actionPerformed(ActionEvent evt)
              JFileChooser chooser = new JFileChooser();
              int rVal = chooser.showOpenDialog(enterFile1);
              if(rVal == JFileChooser.APPROVE_OPTION)
                   inputFile2 = chooser.getSelectedFile();
                   PrintWriter outputStream;
                   file2Name = inputFile2.getName();
                   enterLabel2.setText(file2Name);
    } // end classAnd now the main class:
    * Main.java
    * Created on June 13, 2006, 2:29 PM
    * @author Danielle
    package micromerger;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    public class Main
        /** Creates a new instance of Main */
        public Main()
         * @param args the command line arguments
        public static void main(String[] args)
            MGui mainScreen = new MGui();
            //mainScreen.setVisible(true);
            /**Starting to get file choices and moving them into GPR Handler:
             System.out.println("into main method");
         String file1Name = new String("");
             file1Name = MGui.get1Name();
         System.out.println("good so far- have MGui.get1Name()");
        }// end main(String[] args)
    }// end class Main

    um, yeah, you definitely have a recursion problem, that's going to create an infinite loop. you will eventually end up an out of memory error, if you don't first get the OS telling you you have too many windows. interestingly, because you are deferring execution, you won't get a stack overflow error, which you expect in an infinite recursion.
    lets examine why this is happening:
    in main, you call new MGui().
    new MGui() creates a runnable object which will be run on the event dispatch thread. That method ALSO calls new MGui(), which in turn ALSO creates a new object which will be run on the event dispatch thead. That obejct ALSO calls new MGui(), which ...
    well, hopefully you get the picture.
    you should never unconditionally call a method from within itself. that code that you have put in the constructor for MGui should REALLY be in the main method, and the first time you create the MGui in the main method as it currently exists is unnecessary.
    here's what you do: get rid of the MGui constructor altogether. since it is the implicit constructor anyway, if it doesn't do anything, you don't need to provide it.
    now, your main method should actually look like this:
    public static void main( String [] args ) {
      SwingUtilities.invokeLater( new Runnable() {
        public void run() {
          MGui app = new MGui();
          app.createAndShowGUI();
    }// end mainyou could also declare app and call the constructor before creating the Runnable, as many prefer, because you would have access to it from outside of the Runnable object. The catch there, though, is that app would need to be declared final.
    - Adam

  • Adding a window to container error

    I have this table that I want to add to a my main program.
    The table works but when I add the table module to the main program I get an error.
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
    This is the table program
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.io.*;
    public class TableSave extends JFrame
         private JTable table;
         public TableSave()
              String[] columnNames = { "Depth", "Density"};
              Object[][] data =
              table = new JTable(data, columnNames)
                   //  Returning the Class of each column will allow different
                   //  renderers to be used based on Class
                   public Class getColumnClass(int column)
                        return getValueAt(0, column).getClass();
              table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
              table.setPreferredScrollableViewportSize(table.getPreferredSize());
              JScrollPane scrollPane = new JScrollPane( table );
              getContentPane().add( scrollPane );
              //  Save table to file button.
              //  Actually the code only prints out the data,
              //  its up to you to modify the code to write it to a file
              JButton button2 = new JButton( "Save Table to File" );
              button2.addActionListener( new ActionListener()
                  JFileChooser fc=new JFileChooser(System.getProperty("user.dir"));
                        //show dialog
                   public void actionPerformed(ActionEvent e)
                        int rows = table.getRowCount();
                        int columns = table.getColumnCount();
                        //  Write out the Column Headers
                        TableColumnModel header = table.getColumnModel();
                        for (int k = 0; k < columns; k++)
                             TableColumn column = header.getColumn(k);
                             String value = (String)column.getHeaderValue();
                             //System.out.print( value );
                             //System.out.print( "|" );
                        //System.out.println();
                        //  Write out the table data
                   try{
                        int fd = fc.showSaveDialog(TableSave.this);
                       if(fd==JFileChooser.APPROVE_OPTION){
                             FileOutputStream fo=new FileOutputStream(fc.getSelectedFile());
                             PrintStream ps=new PrintStream(fo);
                        for (int j = 0; j < rows; j++)
                             for (int k = 0; k < columns; k++)
                                  Object value = table.getModel().getValueAt(j, k);
                                  ps.println(value.toString() );
                                  //System.out.print( value.toString() );
                                  //System.out.print( "|" );
                          }//System.out.println();
                     }catch(Exception ex){}
              getContentPane().add(button2, BorderLayout.SOUTH);
         public static void main(String[] args)
              TableSave frame = new TableSave();
              frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
              frame.pack();
              frame.setVisible(true);
    }then I add it to the main program as follows
    public void actionPerformed (ActionEvent event)
            // Determine which object was the source of the event.
            Object source = event.getSource ();
          else if (source == menuSheet)
              count2++;
              JInternalFrame f = new JInternalFrame("mass/Density"+count2);
                f.setResizable(true);
              f.setClosable(true);
              f.setMaximizable(true);
              f.setIconifiable(true);
              f.setSize(270,420);
              f.setLocation(count2*15,count2*15);
              f.addInternalFrameListener(this);
              f.setVisible(true);
              frame.getContentPane().add(f);
                tablesave = new TableSave();
                Container pane = f.getContentPane ();
            pane.setLayout (new BorderLayout());
            pane.add (tablesave, BorderLayout.CENTER);
    Help me resolve this or offer a solution to this problem.
    regards,
    moi

    Hi there,
    Both Internal Frames and Jframe are containers.
    Jframe is a heavy weight component which you are trying to add in a lightweight internal Frame component, hence the error.
    You try having the table implementation which is just a JTable and not a Jframe (You are currently extending from JFrame), then it will work out.
    Cheers
    Ravi Sinha

  • Error when I push a button in an applet

    hi,
    I created a class wich extends JApplet. I made several button objects and added actionlisteners to them. One button is supposed to create an object of the class Outcall. I wrote this Outcall class and put it into the directory.
    Now when I make an object of this class in a console application (in the main method) there's no problem. But when I do it attached to a actionlistener i get an error in my appletviewer window but the program compiles fine.
    can anyone help me
    thanx,
    olivier
    here's my applet
    import javax.telephony.*;
    import javax.telephony.events.*;
    import javax.telephony.media.*;
    import javax.telephony.media.events.*;
    import java.net.*;
    import java.util.*;
    import javax.sound.sampled.*;
    import java.io.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Test extends JApplet implements ItemListener{
    //klasse variabelen
    JLabel tekiezennummer;
    JTextField nummerinput;
    JLabel statuslabel;
    JTextField status;     
    JPanel kaarten;
    String input="";
    final static String TELEFOONKIEZER = "TELEFOONKIEZER";
    final static String ANTWOORDAPPARAAT = "ANTWOORDAPPARAAT";
    //actionlisteners
    class luister implements ActionListener{
         public void actionPerformed(ActionEvent e){
         input += ((JButton)e.getSource()).getText();
         nummerinput.setText(input);
    class belluister implements ActionListener{
         public void actionPerformed(ActionEvent e){
              Outcall gesprek=new Outcall(input);
              gesprek.bellen();
    class clearluister implements ActionListener{
         public void actionPerformed(ActionEvent e){
              input="";
              nummerinput.setText("");
    luister luisteraar=new luister();
    belluister belluisteraar=new belluister();
    clearluister clearluisteraar=new clearluister();
    //init
         public void init(){
         Container doos = getContentPane();
              String comboBoxItems[] = { TELEFOONKIEZER, ANTWOORDAPPARAAT };
              JPanel paneel = new JPanel();
              JComboBox keuze = new JComboBox(comboBoxItems);
              keuze.setEditable(false);
              keuze.addItemListener(this);
              paneel.add(keuze);
              doos.add(paneel, BorderLayout.NORTH);
              kaarten = new JPanel();
              kaarten.setLayout(new CardLayout());
              //alles wat met de telefoonkiezer te maken heeft
              JPanel p1 = new JPanel();
              JPanel paneel1=new JPanel();
              JPanel paneeltje1=new JPanel();
              paneeltje1.setLayout(new FlowLayout());
              tekiezennummer=new JLabel("Het te bellen nummer");
              paneeltje1.add(tekiezennummer);
              nummerinput=new JTextField();
              nummerinput.setColumns(20);
              paneeltje1.add(nummerinput);
              JButton clear=new JButton("Clear");
              clear.addActionListener(clearluisteraar);
              paneeltje1.add(clear);
              JPanel paneeltje2=new JPanel();
              paneeltje2.setLayout(new FlowLayout());
              statuslabel=new JLabel("Status");          
              paneeltje2.add(statuslabel);
              status=new JTextField();
              status.setColumns(20);
              status.setEditable(false);
              paneeltje2.add(status);
              paneel1.add(paneeltje1,BorderLayout.NORTH);
              paneel1.add(paneeltje2,BorderLayout.CENTER);
              JPanel paneel2=new JPanel();
              paneel2.setLayout(new GridLayout(0,3));
                        for(int i=1;i<=3;i++){
                        Integer opdruk=new Integer(i);
                        String text=opdruk.toString();
                        JButton knop=new JButton(text);
                        knop.addActionListener(luisteraar);
                        paneel2.add(knop);
                   for(int i=4;i<=6;i++){
                        Integer opdruk=new Integer(i);
                        String text=opdruk.toString();
                        JButton knop=new JButton(text);
                        knop.addActionListener(luisteraar);
                        paneel2.add(knop);}
                   for(int i=7;i<=9;i++){
                        Integer opdruk=new Integer(i);
                        String text=opdruk.toString();
                        JButton knop=new JButton(text);
                        knop.addActionListener(luisteraar);
                             paneel2.add(knop);
                   JButton ster=new JButton("*");
                   JButton nul=new JButton("0");
                   JButton hek=new JButton("#");
                   ster.addActionListener(luisteraar);
                   nul.addActionListener(luisteraar);
                   hek.addActionListener(luisteraar);
                   paneel2.add(ster);
                   paneel2.add(nul);
                   paneel2.add(hek);
                   JPanel paneel3=new JPanel();
                   JButton bel=new JButton("Bellen");
                   JButton hangup=new JButton("Ophangen");
                   bel.addActionListener(belluisteraar);
                   paneel3.add("North",bel);
                   paneel3.add("Center",hangup);
              p1.add("North",paneel1);
              p1.add("Center",paneel2);
              p1.add("South",paneel3);
         //alles wat met het antwoordapparaat te maken heeft
         JPanel p2 = new JPanel();
         kaarten.add(p1, TELEFOONKIEZER);
              kaarten.add(p2, ANTWOORDAPPARAAT);
              doos.add(kaarten, BorderLayout.CENTER);
    //de itemlistener om van paneel te veranderen
    public void itemStateChanged(ItemEvent event) {
    CardLayout cl = (CardLayout)(kaarten.getLayout());
    cl.show(kaarten, (String)event.getItem());
    public static

    By the way I get the mistake
    Exception occurred during event dispatching:
    java.lang.NoClassDefFoundError: javax/telephony/CallObserver
         at Test$belluister.actionPerformed(Test.java:35)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
         at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)
         at java.awt.Component.processMouseEvent(Component.java:3715)
         at java.awt.Component.processEvent(Component.java:3544)
         at java.awt.Container.processEvent(Container.java:1164)
         at java.awt.Component.dispatchEventImpl(Component.java:2593)
         at java.awt.Container.dispatchEventImpl(Container.java:1213)
         at java.awt.Component.dispatchEvent(Component.java:2497)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
         at java.awt.Container.dispatchEventImpl(Container.java:1200)
         at java.awt.Component.dispatchEvent(Component.java:2497)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    Exception occurred during event dispatching:
    java.lang.NoClassDefFoundError: javax/telephony/CallObserver
         at Test$belluister.actionPerformed(Test.java:35)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
         at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)
         at java.awt.Component.processMouseEvent(Component.java:3715)
         at java.awt.Component.processEvent(Component.java:3544)
         at java.awt.Container.processEvent(Container.java:1164)
         at java.awt.Component.dispatchEventImpl(Component.java:2593)
         at java.awt.Container.dispatchEventImpl(Container.java:1213)
         at java.awt.Component.dispatchEvent(Component.java:2497)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
         at java.awt.Container.dispatchEventImpl(Container.java:1200)
         at java.awt.Component.dispatchEvent(Component.java:2497)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    why do I get this in my applet and not in my console application???
    greetz,
    olivier

  • Adding a window to a container: Error

    Hello there,
    Im facing a problem with my program.My program is about a Car Rental System and I am using GUI for the interface. From the main(CarRental) program,when user click one of the menu, there is another interface will appear for user to enter details.The problem is,my main (CarRental)program is running,click the first menu,then another interface open,but wen user enter details n click buttons , it is not even working. Below is my program:
    //This is main menu program
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    import javax.swing.JFrame;
    public class CarRental extends JFrame implements ActionListener{
         JFrame f;
         JLabel l1,l2,l3,choice;
         JPanel p1,p2,p3,p4,p5,p6,p7,p8,p9;
         JButton btnA,btnB,btnC,btnD,btnE,btnF;
         Connection conn;
         Statement stmt;
         ResultSet rs;
         public CarRental(){
              p1=new JPanel();p2=new JPanel();p3=new JPanel();
              p4=new JPanel();p5=new JPanel();p6=new JPanel();
              p7=new JPanel();p8=new JPanel();p9=new JPanel();
              f=new JFrame("New Rental Record");
              l1=new JLabel("........::: Car Rental System :::.........");
              l2=new JLabel("*******************************************************");
              choice=new JLabel("Please select your option:");
              btnA=new JButton("[1] New Rental Record");
              btnB=new JButton("[2] Update Rental Record");
              btnC=new JButton("[3] Search Rental Record");
              btnD=new JButton("[4] Delete Rental Record");
              btnE=new JButton("[5] Display Rental record");
              btnF=new JButton("[6] Exit");
              l3=new JLabel("*******************************************************");
              f.setLayout(new GridLayout(10,1));
              f.pack();
              f.setVisible(true);
              f.setSize(350,500);
              f.setBackground(Color.white);
              p1.add(l1);f.add(p1);
              p2.add(l2);f.add(p2);
              p3.add(choice);f.add(p3);
              p4.add(btnA);f.add(p4);
              p5.add(btnB);f.add(p5);
              p6.add(btnC);f.add(p6);
              p7.add(btnD);f.add(p7);
              p8.add(btnE);f.add(p8);
              p9.add(btnF);f.add(p9);
              btnA.addActionListener(this);
              btnB.addActionListener(this);
              btnC.addActionListener(this);
              btnD.addActionListener(this);
              btnE.addActionListener(this);
              btnF.addActionListener(this);
         f.addWindowListener(new WindowAdapter(){
                   public void windowClosing(WindowEvent e)
                        {System.exit(0);}});
              public void actionPerformed(ActionEvent e){
                        if(e.getSource()== btnA)
                        {     NewRecord nr=new NewRecord();}
                         else if(e.getSource()== btnB)
                        {     updateRecord ur=new updateRecord();}
                        else if(e.getSource()== btnC)
                        {     searchRecord sr=new searchRecord(); }
                        else if(e.getSource()== btnD)
                        {     deleteRecord dr=new deleteRecord(); }
                        else if(e.getSource()== btnE){
                             try{
                                  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                             catch(ClassNotFoundException e3) {
                                  JOptionPane.showMessageDialog(null,"ERROR:"+e3.getMessage());
                             try{
                                  conn=DriverManager.getConnection("Jdbc:Odbc:Car Rental", "", "");
                                  stmt=conn.createStatement();
                                  rs=stmt.executeQuery("Select * from Customer where CustID");
    String s=("CustID:   CustName:    CustAdd:          CustPhone:       No.of days rent:     Rate per rental: \n");
    while(rs.next())
    s=s+rs.getString(1)+"             "+rs.getString(2)+"              "+rs.getString(3)+"              "+rs.getString(4)+"                    "+rs.getString(5)+"                     "+rs.getString(6)+"\n";
                                       JOptionPane.showMessageDialog(null,s);}
    catch(SQLException e4){e4.printStackTrace();}}//end of F
    //to exit the program                    
    else if(e.getSource()== btnF){
    JOptionPane.showMessageDialog(null,"Thank you");System.exit(0);}
    else
    JOptionPane.showMessageDialog(null,"Invalid Option!");System.exit(0);
                   }//end of if statement
    public static void main(String args[]){
              CarRental cr= new CarRental();}//end of main
    }//end of main menu
    //New Rental program when user selects it
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    public class NewRecord extends JFrame implements ActionListener{
         JFrame f;
         Container c;
         FlowLayout layout;
         JLabel l1,l2,custId,custName,custAdd,custPhone,dayRent,rateRent;
    JTextField tid,tname,tphone,tday,trate;
                                  JTextArea tadd;
                                  JButton save,clear,exit;
                                  Connection conn;
                                  Statement stmt;
                                  ResultSet rs;
                                  JPanel p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11;
                             public NewRecord(){
                                //super("New Record");
                                  layout = new FlowLayout();
                                  c=getContentPane();
                                  c.setLayout(layout);
                                  p1=new JPanel();p2=new JPanel();p3=new JPanel();
                                  p4=new JPanel();p5=new JPanel();p6=new JPanel();
                                  p7=new JPanel();p8=new JPanel();p9=new JPanel();
                                  p10=new JPanel();p11=new JPanel();
                                  f=new JFrame();     
                                  l1=new JLabel("........::: New Rental Record :::.........");
                                  l2=new JLabel("*******************************************************");
                                  custId =new JLabel("Customer ID:");
                                  custName=new JLabel("Customer name:");
                                  custAdd=new JLabel("Customer address:");
                                  custPhone=new JLabel("Customer phone:");
                                  dayRent=new JLabel("Days of rental:");
                                  rateRent=new JLabel("Rate per rental:");
                                  tid= new JTextField(10);
                                  tname=new JTextField(10);
                                  tphone=new JTextField(10);
                                  tadd=new JTextArea(4,30);
                                  tday=new JTextField(5);
                                  trate=new JTextField(10);
                                  save=new JButton("SAVE");
                                  clear=new JButton("CLEAR");
                                  exit=new JButton("EXIT");
                                  f.setLayout(new GridLayout(11,1));
                                  f.setBackground(Color.white);
                                  f.setVisible(true);
                                  f.setSize(600,600);
                                  p1.add(l1);f.add(p1);
                                  p2.add(l2);f.add(p2);
                                  p3.add(custId);p3.add(tid);f.add(p3);     
                                  p4.add(custName);p4.add(tname);f.add(p4);
                                  p5.add(custAdd);p5.add(tadd);f.add(p5);
                                  p6.add(custPhone);p6.add(tphone);f.add(p6);                         
                                  p7.add(dayRent);p7.add(tday);f.add(p7);
                                  p8.add(rateRent);p8.add(trate);f.add(p8);
                                  p9.add(save);f.add(p9);
                                  p10.add(clear);f.add(p10);
                                  p11.add(exit);f.add(p11);
                             /*     f.add(l1);
                                  f.add(l2);
                                  f.add(custId);
                                  f.add(tid);
                                  f.add(custName);
                                  f.add(tname);
                                  f.add(custAdd);
                                  f.add(tadd);
                                  f.add(custPhone);
                                  f.add(tphone);
                                  f.add(dayRent);
                                  f.add(tday);
                                  f.add(rateRent);
                                  f.add(trate);
                                  f.add(save);
                                  f.add(clear);
                                  f.add(exit);*/
                                  c.add(f);
                                  save.addActionListener(this);
                                  clear.addActionListener(this);
                                  exit.addActionListener(this);
                                  f.addWindowListener(new WindowAdapter(){
                                  public void windowClosing(WindowEvent e)
                                       {System.exit(0);}});
                             public void actionPerformed(ActionEvent e){
                                  if(e.getSource()== exit)
                                       {System.exit(0);}
                                  if(e.getSource()== clear){
                                       tid.setText("");
                                       tname.setText("");
                                       tadd.setText("");
                                       tphone.setText("");
                                       tday.setText("");
                                       trate.setText("");}
                                  if(e.getSource()== save){
                                       try{
                                            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                                       catch(ClassNotFoundException e1) {
                                            JOptionPane.showMessageDialog(null,"ERROR:"+e1.getMessage());
                                       try{
                                            conn=DriverManager.getConnection("Jdbc:Odbc:Car Rental", "", "");
                                            stmt=conn.createStatement();
                                            rs=stmt.executeQuery("Select * from Customer");
                                            while(rs.next()){
                                            tid.setText(rs.getString(1));
                                            tname.setText(rs.getString(2));
                                            tadd.setText(rs.getString(3));
                                            tphone.setText(rs.getString(4));
                                            tday.setText(rs.getString(5));
                                            trate.setText(rs.getString(6));}
                                            String s=("CustID:   CustName:    CustAdd:          CustPhone:       No.of days rent:     Rate per rental: \n");
                                            while(rs.next())
                                            s=s+rs.getString(1)+"             "+rs.getString(2)+"              "+rs.getString(3)+"              "+rs.getString(4)+"                    "+rs.getString(5)+"                     "+rs.getString(6)+"\n";
                                                 JOptionPane.showMessageDialog(null,s);
                                       catch(SQLException e2){
                                                 e2.printStackTrace();
                             public static void main(String args[]){
                                       NewRecord nr=new NewRecord();
                                  //     nr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                       }//end of newRecord class
                                  }//ends of New rental program
    I tried to use extending to JPanel or JApplet but still the same. Any help??

    Hi,
    In the NewRecord java file, use change the
    f = new JFrame();               
    c = f.getContentPane();, after that all panel add into the container
    p1.add(l1);c.add(p1);                    
    p2.add(l2);c.add(p2);
    p3.add(custId);p3.add(tid);c.add(p3);     
    p4.add(custName);p4.add(tname);c.add(p4);
    p5.add(custAdd);p5.add(tadd);c.add(p5);
    p6.add(custPhone);p6.add(tphone);c.add(p6);          
    p7.add(dayRent);p7.add(tday);c.add(p7);
    p8.add(rateRent);p8.add(trate);c.add(p8);
    p9.add(save);c.add(p9);
    p10.add(clear);c.add(p10);
    p11.add(exit);c.add(p11);and finally remove this line below
    //c.add(f);Try to avoid add frame into the container, or else you will receive adding a window to a container error.
    Rgrds,
    Sen
    Message was edited by:
    arjensen

Maybe you are looking for

  • How do I change my iCloud Account information?

    When I got my iPhone back in October, it leads through setting it up, and signing up with your Apple ID, which I have been using my local email account I have through my local cable ISP - ****@cox.net, because that again is what I have used for iTune

  • Text of Purchase Requisition ECC to SRM

    Hi all, When I run the BBP_EXTREQ_TRANSFER in ECC to SRM5.0, the field "INTERNAL NOTE", there isn' t in SRM. Plz, Anyone help me? Regards, Angie.

  • How to ask the BFB?

    Hola a todos, me gustaría saber cómo hacer correctamente construido para el certificado de blackberry.  vi en el proveedor, en el administrador de aplicaciones que dice se aplica a BFB, pero me an dicho que este no es el camino correcto, que también

  • Problem in executing Dynamic SQL in SYSTEM Schema

    Hi, I am trying to execute the below given dynamic sql from SYSTEM account. 'SELECT cnt, SUBSTR(SYS_CONNECT_BY_PATH(column_name,'',''),2) AS COLS FROM ( SELECT b.column_name,b.position,COUNT(1) over (ORDER BY a.constraint_name) AS cnt FROM SYS.dba_Co

  • BIPublisher + Apex report problem with summary operator

    I design report layout in Microsoft Word with Oracle BI Publisher Tempate Builder. I need to sum two numbers: 2+2 then I create following statement (addition): <?2+2?> In PDF preview I see correct sum: 4 Next I save this report in RTF format and impo