Swing и WebEditorKit - отображение моего браузера в SwingFrame - PullRequest
2 голосов
/ 05 марта 2012

Недавно я работал над небольшим проектом, и, кажется, я запутался и столкнулся с огромным ментальным блоком. Я знаю, это должно быть просто, вот почему это так меня раздражает, но, как следует из названия, у меня есть 3 класса:

main - это должно создавать экземпляры других классов и содержать только конструкторы:

import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JFrame;

public class main {

    public static void main(String[] args) {
        BrowserFrame browser = new BrowserFrame();

        JFrame mainFrame = new JFrame();

        mainFrame.setSize(550,550);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Total Guesswork on the next line! Result of a mental block!
        //mainFrame.add(browser);
    }
}

BrowserFrame - здесь я создал реальное средство просмотра HTML.

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JEditorPane;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;

public class BrowserFrame {

    public BrowserFrame()   {

        SwingUtilities.invokeLater(new Runnable()
        {
            public void run() 
            {
            URL url = null;
            try {
                url = new URL("file:///C:/PersonalWorkSpace/PrivateEyes/html/test.html");
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            JEditorPane jEditorPane = new JEditorPane();
            jEditorPane.setEditable(false);
            JScrollPane jScrollPane = new JScrollPane(jEditorPane);

            HTMLEditorKit kit = new HTMLEditorKit();
            jEditorPane.setEditorKit(kit);

            StyleSheet styleSheet = kit.getStyleSheet();
            styleSheet.addRule("body {color:#000; font-family:times; margin: 4px;}");
            styleSheet.addRule("h1 {color: blue;}");
            styleSheet.addRule("h2 {color: #ff0000;}");

            try {
                jEditorPane.setPage(url);
            } catch (IOException e) {
                e.printStackTrace();
            }
            }
        });
    }
}

И, наконец, панель инструментов, которая пока не имеет ничего, но в конечном итоге будет содержать панель инструментов, которую я хочу отобразить в верхней части JFrame после ее кодирования.

Я знаю, что мне нужно сделать компонент BrowserFrame компонентом, но я не могу на всю жизнь понять, как это сделать, и все ресурсы, которые он ищет в Интернете, применяются к другому примеру кода, поэтому он заканчивается смущает меня больше!

Чего я хочу добиться, так это того, чтобы при запуске приложения открывалось окно, в котором отображается мой HTML-документ, а затем в верхней части окна также есть меню, но я даже не могу получить Браузер для отображения в данный момент (:() Любая помощь очень ценится, так как мой ум в настоящий момент здоров и действительно в грязи, я думаю, время для чая.

1 Ответ

2 голосов
/ 05 марта 2012

позвольте вашему браузеру расширить javax.swing.JPanel, затем скажите:

mainFrame.getContentPane().add(new BrowserFrame());

, затем внутри конструктора BrowserFrame

setLayout(new BorderLayout());
add(jEditorPane);

используйте SwingUtilities.invokeLater для создания JFrame и отображения его восновной метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...