0
저는 java를 처음 사용합니다. JFrame에 브라우저를 내장하고 싶습니다. HTML을 표시하기 위해 JEditorPane을 사용했지만 여전히 페이지를 올바르게 표시하지 않습니다. 그것은 페이지를 보여 주지만 사물은 제자리에 없습니다. 가장 큰 문제는 웹 페이지에 포함 된 Java 애플릿이 사용자 정의 브라우저에 표시되지 않는다는 것입니다. 아마 JEditorPane을 올바르게 사용하지 않을 것입니다. 여기 내 코드는 다음과 같습니다.JFrame에 내장 된 브라우저에 애플릿이 포함되어 있습니다.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Frame1 extends JFrame implements ActionListener
{
private JEditorPane editorPane;
private JTextField addressField;
private JButton goButton;
private JLabel label;
public Frame1() {
super("Frame1");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
System.out.println("Unablet to set look and feel.");
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("Enter URL. Must include http://");
// setup editor pane
editorPane = new JEditorPane();
editorPane.setEditable(false);
URL url = null;
try {
url = new URL("http://www.cut-the-knot.org/SimpleGames/FrogsAndToads2d.shtml");
} catch (MalformedURLException e) {
}
if (url != null) {
try {
editorPane.setPage(url);
} catch (IOException e) {
label.setText("Attempted to read a bad URL: " + url);
}
} else {
label.setText("String specifies an unknown protocol.");
}
// put editor pane in a scroll pane
JScrollPane editorScrollPane = new JScrollPane(editorPane);
editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
editorScrollPane.setPreferredSize(new Dimension(250, 145));
editorScrollPane.setMinimumSize(new Dimension(10, 10));
// setup everything in southPanel.
// southPanel > addressBar + label> addressField + goButton
addressField = new JTextField(30);
goButton = new JButton("Go");
goButton.addActionListener(this);
JPanel addressBar = new JPanel();
JPanel southPanel = new JPanel(new GridLayout(2, 1));
addressBar.add(addressField);
addressBar.add(goButton);
southPanel.add(addressBar);
southPanel.add(label);
// add everything to JFrame
setLayout(new BorderLayout());
add(southPanel, BorderLayout.SOUTH);
add(editorScrollPane, BorderLayout.CENTER);
setSize(500, 500);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == goButton) {
URL url = null;
try {
url = new URL(addressField.getText());
} catch (MalformedURLException murle) {
}
if (url != null) {
try {
editorPane.setPage(url);
} catch (IOException ioe) {
label.setText("Attempted to read a bad URL: " + url);
}
} else {
label.setText("String specifies an unknown protocol.");
}
}
}
public static void main(String[] args) {
new Frame1();
}
}
'JEditorPane'는 브라우저가 아닙니다. 그것은 텍스트 구성 요소입니다. 이 [답변] (http://stackoverflow.com/questions/6784577/vertically-centering-text-in-html-table-cell-in-java-jlabel/6785121#6785121)도 참조하십시오. – trashgod
예, Swing의 HTML 지원은 애플릿 또는 유사한 포함을위한 것이 아니라 서식 지정에만 사용됩니다. 'appletviewer'의 일부를 포함 할 수는 있지만, HTML 출력은없고 애플릿 만 출력 할 수 있습니다. –
제쳐두고, catch 블록에서 아무 것도 시도하지 않고 try/catch하는 것은 매우 나쁜 형태입니다. 예외를 스켈치 법으로 처리하지 마십시오. –