【发布时间】:2013-11-27 06:01:33
【问题描述】:
当我尝试运行我的程序时,我不断收到以下错误:
线程“主”java.lang.IllegalArgumentException 中的异常:添加 容器的窗口 java.awt.Container.checkNotAWindow(Container.java:483) 在 java.awt.Container.addImpl(Container.java:1084) 在 javax.swing.JTabbedPane.insertTab(JTabbedPane.java:724) 在 javax.swing.JTabbedPane.addTab(JTabbedPane.java:767) 在 CourserWindow.(CourserWindow.java:40) 在 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);
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请发布SSCCE。实际上,该代码无法编译,更不用说引发运行时异常了。
-
它编译得很好,但会产生运行时错误