我尝试使用swing和awt创建一个Web浏览器。我也使用了actionlistener和actionevent。但它没有用。请帮我解决一下这个。 它运行没有任何错误,但没有加载网页。
import java.awt.*;
import java.net.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
public class img extends JFrame
{
private TextField field=new TextField();
private JButton b=new JButton("go");
private JEditorPane display=new JEditorPane();
private JScrollPane panee=new JScrollPane(display);
public static void main(String args[])
{
img file=new img();
file.frameHandler();
}
public void frameHandler() {
setTitle("Browser");
setSize(1200,800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(null);
setResizable(false);
setLocationRelativeTo(null);
addComponentsToFrame(getContentPane());
}
public void addComponentsToFrame(Container pane) {
Insets insets=getInsets();
pane.add(field);
pane.add(panee);
Font font=new Font("STENCIL",Font.ITALIC,10);
field.setFont(font);
field.setBounds(8-insets.left, 30-insets.top,1160, 20);
b.setBounds(1150-insets.left, 30-insets.top,80, 20);
panee.setBounds(8-insets.left, 52-insets.top, 1200, 830);
pane.add(b);
}
private void actionListenerCalls()
{
b.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
loadData("http://"+e.getActionCommand());
}
});
display.addHyperlinkListener(new HyperlinkListener(){
@Override
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED){
loadData(e.getURL().toString());
}
}
});
}
private void loadData(String text)
{
try{
display.setPage(text);
}
catch(Exception ee)
{
System.out.println("error");
}
}
}
答案 0 :(得分:1)
您尚未调用方法actionListenerCalls
来绑定侦听器
可能会把它放在这里:
public void frameHandler() {
....
addComponentsToFrame(getContentPane());
actionListenerCalls();//<-- invoke here
setVisible(true);
}
P.S。请避免使用null布局。
修改强>
来自docs:
我们不支持完整的CSS规范。请参阅CSS的javadoc 看看我们支持的属性。两个主要的CSS解析 我们目前不支持的相关概念是伪选择器, 例如A:link {color:red}和重要修饰符。
注意:此实施目前尚未完成。它可以被替换 使用完整的替代实现。未来的版本 这个类将提供更好的CSS支持。
您可以尝试load external css:
StyleSheet ss = new StyleSheet();
ss.importStyleSheet(styleSheetURL);
HTMLEditorKit kit = (HTMLEditorKit)jEditorPane.getEditorKit();
kit.setStyleSheet(ss);
打开默认浏览器
您可以尝试使用Desktop browse()
来自docs
browse(uri)方法可以抛出各种异常,包括a NullPointerException如果URI为null,则为 如果不支持BROWSE操作,则为UnsupportedOperationException。 如果是默认浏览器,则此方法可以抛出IOException 应用程序无法找到或启动,如果是一个SecurityException 安全管理员否认调用。
private void onLaunchBrowser(ActionEvent evt) {
URI uri = null;
try {
uri = new URI(txtBrowserURI.getText());
desktop.browse(uri);
} catch(IOException ioe) {
System.out.println("The system cannot find the " + uri +
" file specified");
//ioe.printStackTrace();
} catch(URISyntaxException use) {
System.out.println("Illegal character in path");
//use.printStackTrace();
}
}