Java的。线程“main”中的异常java.lang.IllegalArgumentException:向容器添加窗口

时间:2013-11-27 06:01:33

标签: java swing layout jpanel

当我尝试运行程序时,我一直收到以下错误:

  

线程“main”中的异常java.lang.IllegalArgumentException:添加   一个容器窗口   java.awt.Container.checkNotAWindow(Container.java:483)at   java.awt.Container.addImpl(Container.java:1084)at   javax.swing.JTabbedPane.insertTab(JTabbedPane.java:724)at at   javax.swing.JTabbedPane.addTab(JTabbedPane.java:767)at at   CourserWindow。(CourserWindow.java:40)at   CourserWindow.main(CourserWindow.java:58)

以下是我的文件:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;

public class CourserWindow extends JFrame
{
    private JFrame panel;

    public CourserWindow()
    {
  //Set default window size
  final int WINDOW_WIDTH = 500;
  final int WINDOW_HEIGHT = 400;

  setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

  //Set title of window
  setTitle("Courser");

  //set close button functionality      
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //Add grid layout for left/right areas
  setLayout(new GridLayout(1, 2));

  //create left side
  JTabbedPane tabbedPane = new JTabbedPane();

  //create icons for tabs
  ImageIcon browserIcon = new ImageIcon("Icons/BrowserIcon.jpg");
  ImageIcon addressIcon = new ImageIcon("Icons/AddressBookIcon.jpg");

  EditorPaneFrame panel1 = Browser();

  //add tabs
  //tabbedPane.addTab("Address Book", addressIcon, panel1, "Contact info");
  tabbedPane.addTab("Browser", browserIcon, panel1, "Browse the web");

  panel = new JFrame();

  setVisible(true);
  }

  public EditorPaneFrame Browser()
  {
  EditorPaneFrame browser = new EditorPaneFrame();

  return browser;
  }

  public static void main(String[] args)
  {
     new CourserWindow();
  }
 }

package editorPane;  
 import java.awt.*;
 import java.awt.event.*;   
 import java.io.*;   
 import java.util.*;   
 import javax.swing.*;   
 import javax.swing.event.*;   
/** 
  * This frame contains an editor pane, a text field and button to enter a URL and     load a document, 
  * and a Back button to return to a previously loaded document. 
  */

public class EditorPaneFrame extends JPanel
{ 
       private static final int DEFAULT_WIDTH = 600; 
       private static final int DEFAULT_HEIGHT = 400; 
       public EditorPaneFrame() 
      { 
            setSize( DEFAULT_WIDTH, DEFAULT_HEIGHT); 
            final Stack < String > urlStack = new Stack < >(); 
             final JEditorPane editorPane = new JEditorPane(); 
             final JTextField url = new JTextField( 30); 

            // set up hyperlink listener 
             editorPane.setEditable( false); 
             editorPane.addHyperlinkListener( new HyperlinkListener() 
                  { 
                         public void hyperlinkUpdate( HyperlinkEvent event) 
                        { 
                               if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) 
                              { 
                                     try 
                                    { 
                                          // remember URL for back button 
                                           urlStack.push( event.getURL(). toString()); 

                                          // show URL in text field 
                                           url.setText( event.getURL(). toString()); 
                                           editorPane.setPage( event.getURL()); 
                                    } 
                                     catch (IOException e) 
                                    { 
                                           editorPane.setText(" Exception: " + e); 
                                    } 
                              } 
                        } 
                  }); 

            // set up checkbox for toggling edit mode 
            final JCheckBox editable = new JCheckBox();
            editable.addActionListener( new ActionListener() 
                  { 
                        public void actionPerformed( ActionEvent event) 
                        { 
                               editorPane.setEditable( editable.isSelected()); 
                        } 
                  }); 

            // set up load button for loading URL 
             ActionListener listener = new ActionListener() 
                  { 
                         public void actionPerformed( ActionEvent event) 
                        { 
                               try 
                              { 
                                    // remember URL for back button 
                                     urlStack.push( url.getText()); 
                                     editorPane.setPage( url.getText()); 
                              } 
                               catch (IOException e) 
                              { 
                                     editorPane.setText(" Exception: " + e); 
                              } 
                        } 
                }; 
           JButton loadButton = new JButton(" Load"); 
           loadButton.addActionListener( listener); 
           url.addActionListener( listener); 

 // set up back button and button action 
           JButton backButton = new JButton(" Back"); 
           backButton.addActionListener( new ActionListener() 
                { 
                       public void actionPerformed( ActionEvent event) 
                      { 
                             if (urlStack.size() <= 1) return; 
                             try 
                            { 
                                  // get URL from back button 
                                   urlStack.pop();

                                 // show URL in text field 
                                   String urlString = urlStack.peek(); 
                                   url.setText( urlString); 
                                 editorPane.setPage( urlString); 
                          } 
                           catch (IOException e) 
                          { 
                                 editorPane.setText(" Exception: " + e); 
                          } 
                    } 
              }); 
         add( new JScrollPane( editorPane), BorderLayout.CENTER); 

        // put all control components in a panel 
         JPanel panel = new JPanel(); 
         panel.add( new JLabel(" URL")); 
         panel.add( url); 
         panel.add( loadButton); 
         panel.add( backButton); 
         panel.add( new JLabel(" Editable")); 
         panel.add( editable); 
         add( panel, BorderLayout.SOUTH); 

         setVisible(true);
  }      
 }

1 个答案:

答案 0 :(得分:1)

在编辑器窗格中,您将扩展JPanel和构造函数 public EditorPaneFrame()您要在同一JPanel中添加新的JPanel对象。

add( panel, BorderLayout.SOUTH); 

你应该extend JFrame然后它会起作用。