javax.swing: JEditorPane (HTML-страница) не отображается в основном фрейме - PullRequest
0 голосов
/ 02 марта 2011
Браузер

класса имеет метод getBrowserWindow(), который возвращает JEditorPane(new URL("some URL")).

Класс MainForm вызывает новый Browser(). getBrowserWindow() и назначает его другому объекту JEditorPane.

editor = new Browser().getBrowserWindow(); 
scrollpane = new JScrollPane(editor);

Редактор объектов .hashCode() правильный, поэтому нет сомнений, что у меня есть нужный объект.

Тем не менее, я не вижу html-страницу в главном фрейме .

P.S. я попытался создать вместо htmlpane простой JEditorPane, заполненный только текстом, и этот я не мог видеть ни того, ни другого.

P.P.S.

package faxutils;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;


public class MainForm {

    public MainForm() {

    }

    private static GeneralActions ga = new GeneralActions();
    private static Arguments _args_for_Update;
    private static String _Phone;
    private static JTextField[] emails;
    private static MyConstants c = new MyConstants();
    private static JFrame frame = new JFrame("frame title");
    private static JCheckBox c2 = new JCheckBox("SMS Notification");
    private static JCheckBox c1 = new JCheckBox("PDF");
    private static JCheckBox c3 = new JCheckBox("153");
    private static JTextField textBox1 = new JTextField(20);
    private static JTextField textBox2 = new JTextField(20);
    private static JTextField textBox3 = new JTextField(20);
    private static JTextField textBox4 = new JTextField(20);
    private static JTextArea richText = new JTextArea();
    private static JEditorPane log = new JEditorPane();
    private static JScrollPane scrollp = new JScrollPane(richText);
    private static JScrollPane scrollplog = new JScrollPane(log);
    private static JPanel p1 = new JPanel();
    private static JPanel p2 = new JPanel();
    private static JLabel label3 = new JLabel("Send to:");
    private static JLabel label2 = new JLabel("number");
    private static JLabel label = new JLabel("Fax:");
    private static JPanel p3 = new JPanel();
    private static JButton button1 = new JButton("Search");
    private static JButton button2 = new JButton("Save");
    private static JButton button3 = new JButton("Send");
    private static Component[] comp = new Component[]{c1, c2, c3, textBox2, textBox3, textBox3, textBox4, richText, log, button2, button3};

    private static void createAndShowGUI() {
        //Create and set up the window.
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Set up the content pane.
        Container contentPane = frame.getContentPane();
        SpringLayout layout1 = new SpringLayout();
        SpringLayout layout2 = new SpringLayout();
        SpringLayout layout3 = new SpringLayout();
        SpringLayout frmlayout = new SpringLayout();

        p1.setBorder(new TitledBorder("Search"));
        p2.setBorder(new TitledBorder("Customer details"));
        p3.setBorder(new TitledBorder("Send test fax"));

        p1.setLayout(layout1);
        p2.setLayout(layout2);
        p3.setLayout(layout3);

        frame.setLayout(frmlayout);

        //Create and add the components to p1.
        p1.add(label);
        p1.add(textBox1);
        p1.add(button1);
        //Create and add the components to p2
        p2.add(scrollp);
        p2.add(textBox2);
        p2.add(textBox3);
        p2.add(textBox4);
        p2.add(c1);
        p2.add(c2);
        p2.add(button2);
        //Create and add the components to p3
        p3.add(c3);
        p3.add(label3);
        p3.add(label2);
        p3.add(button3);
        p3.add(scrollplog);
        //Add panels to frame
        contentPane.add(p1);
        contentPane.add(p2);
        contentPane.add(p3);

        //Layout1
        //label
        layout1.putConstraint(SpringLayout.WEST, label,
                5,
                SpringLayout.WEST, p1);
        layout1.putConstraint(SpringLayout.NORTH, label,
                5,
                SpringLayout.NORTH, p1);
        //textbox1
        layout1.putConstraint(SpringLayout.WEST, textBox1,
                30,
                SpringLayout.WEST, label);
        layout1.putConstraint(SpringLayout.NORTH, textBox1,
                0,
                SpringLayout.NORTH, label);
        //button1
        layout1.putConstraint(SpringLayout.WEST, button1,
                230,
                SpringLayout.WEST, textBox1);
        layout1.putConstraint(SpringLayout.NORTH, button1,
                -5,
                SpringLayout.NORTH, textBox1);
        //Layout2
        //RICHTEXT
        layout2.putConstraint(SpringLayout.WEST, scrollp, 5, SpringLayout.WEST, p2);
        layout2.putConstraint(SpringLayout.NORTH, scrollp, 5, SpringLayout.NORTH, p2);
        layout2.putConstraint(SpringLayout.EAST, scrollp, -5, SpringLayout.EAST, p2);
        layout2.putConstraint(SpringLayout.SOUTH, scrollp, -150, SpringLayout.SOUTH, p2);
        //TEXTBOX1,2,3
        layout2.putConstraint(SpringLayout.WEST, textBox2, 140, SpringLayout.WEST, scrollp);
        layout2.putConstraint(SpringLayout.NORTH, textBox2, 130, SpringLayout.NORTH, scrollp);
        layout2.putConstraint(SpringLayout.WEST, textBox3, 0, SpringLayout.WEST, textBox2);
        layout2.putConstraint(SpringLayout.NORTH, textBox3, 25, SpringLayout.NORTH, textBox2);
        layout2.putConstraint(SpringLayout.WEST, textBox4, 0, SpringLayout.WEST, textBox3);
        layout2.putConstraint(SpringLayout.NORTH, textBox4, 25, SpringLayout.NORTH, textBox3);
        //CHECKBOXES
        layout2.putConstraint(SpringLayout.WEST, c1, 0, SpringLayout.WEST, scrollp);
        layout2.putConstraint(SpringLayout.NORTH, c1, 200, SpringLayout.NORTH, scrollp);
        layout2.putConstraint(SpringLayout.WEST, c2, 0, SpringLayout.WEST, c1);
        layout2.putConstraint(SpringLayout.NORTH, c2, 25, SpringLayout.NORTH, c1);
        //BUTTON
        layout2.putConstraint(SpringLayout.WEST, button2, 160, SpringLayout.WEST, textBox4);
        layout2.putConstraint(SpringLayout.NORTH, button2, 25, SpringLayout.NORTH, textBox4);
        //Layout3
        //CHECKBOX3
        layout3.putConstraint(SpringLayout.WEST, c3, 5, SpringLayout.WEST, p3);
        layout3.putConstraint(SpringLayout.NORTH, c3, 5, SpringLayout.NORTH, p3);
        //label3
        layout3.putConstraint(SpringLayout.WEST, label3, 50, SpringLayout.WEST, c3);
        layout3.putConstraint(SpringLayout.NORTH, label3, 4, SpringLayout.NORTH, c3);
        // label2
        layout3.putConstraint(SpringLayout.WEST, label2, 50, SpringLayout.WEST, label3);
        layout3.putConstraint(SpringLayout.NORTH, label2, 0, SpringLayout.NORTH, label3);
        //button3
        layout3.putConstraint(SpringLayout.WEST, button3, 305, SpringLayout.WEST, p3);
        layout3.putConstraint(SpringLayout.NORTH, button3, 0, SpringLayout.NORTH, p3);
        //Browser
        layout3.putConstraint(SpringLayout.WEST, scrollplog, 0, SpringLayout.WEST, c3);
        layout3.putConstraint(SpringLayout.NORTH, scrollplog, 25, SpringLayout.NORTH, c3);
        layout3.putConstraint(SpringLayout.EAST, scrollplog, 320, SpringLayout.EAST, c3);
        layout3.putConstraint(SpringLayout.SOUTH, scrollplog, 140, SpringLayout.SOUTH, c3);
        //FrameLayout
        //p1
        frmlayout.putConstraint(SpringLayout.WEST, p1,
                5,
                SpringLayout.WEST, frame);
        frmlayout.putConstraint(SpringLayout.NORTH, p1,
                5,
                SpringLayout.NORTH, frame);
        frmlayout.putConstraint(SpringLayout.EAST, p1,
                380,
                SpringLayout.EAST, frame);
        frmlayout.putConstraint(SpringLayout.SOUTH, p1,
                50,
                SpringLayout.SOUTH, frame);
        //p2
        frmlayout.putConstraint(SpringLayout.WEST, p2,
                5,
                SpringLayout.WEST, frame);
        frmlayout.putConstraint(SpringLayout.NORTH, p2,
                75,
                SpringLayout.NORTH, p1);
        frmlayout.putConstraint(SpringLayout.EAST, p2,
                380,
                SpringLayout.EAST, frame);
        frmlayout.putConstraint(SpringLayout.SOUTH, p2,
                285,
                SpringLayout.SOUTH, p1);
        //p3
        frmlayout.putConstraint(SpringLayout.WEST, p3,
                5,
                SpringLayout.WEST, frame);
        frmlayout.putConstraint(SpringLayout.NORTH, p3,
                285,
                SpringLayout.NORTH, p2);
        frmlayout.putConstraint(SpringLayout.EAST, p3,
                380,
                SpringLayout.EAST, frame);
        frmlayout.putConstraint(SpringLayout.SOUTH, p3,
                200,
                SpringLayout.SOUTH, p2);
        //Display the window.
        frame.setSize(400, 600);
        initialize();
        //  frame.pack();
        frame.setVisible(true);
    }


    private static void setPanelsEnabled(boolean b) {
        for (int i = 0; i < comp.length; i++)
            comp[i].setEnabled(b);
    }

    private static void initialize() {
        try {
            emails = new JTextField[]{textBox2, textBox3, textBox4};
            textBox1.requestFocus();
            setPanelsEnabled(false);
            richText.setEditable(false);
            log.setEditable(false);
            textBox1.setText("enter number here");
        } catch (Exception ex) {
            System.out.println(c.MSGBOX_EXCEPTION_TITLE + ": " + ex);
        }
    }

    private static void button1_Click() {
        try {
            label2.setText(textBox1.getText());
            _Phone = textBox1.getText();
            _args_for_Update = ga.query1(_Phone, c1, c2);

            if (_args_for_Update.getUserId() == 0) {
                c1.setSelected(false);
                c2.setSelected(false);
                System.out.println(c.MSGBOX_SEARCH_STATUS_TITLE + ": " + c.MSGBOX_NO_USER_WAS_FOUND);
            } else {
                richText.setText(_args_for_Update.getUserInfo());
                ga.query2(_args_for_Update); 
                _args_for_Update.setEmailsAmount(ga.fillEmails(_args_for_Update, emails)); 
            }
            boolean b = _args_for_Update.getUserId() > 0;
            setPanelsEnabled(b);
            c3.setSelected(false); 
        } catch (Exception ex) {
            System.out.println(c.MSGBOX_EXCEPTION_TITLE + ": " + ex);
        }
    }

    private static void button2_Click() {
        try {
            int saveOK = ga.SaveSettings(_args_for_Update, emails, c1, c2);
            button1.doClick(); 


            if (saveOK == c.USER_UPDATE_RESULT_0)
                System.out.println(c.MSGBOX_EMAIL_CHANGES_STATUS_TITLE + ": " + c.MSGBOX_CANNOT_DELETE_MAIN_EMAIL);
            else
                System.out.println(c.MSGBOX_USER_STATUS_TITLE + ": " + c.MSGBOX_USER_WAS_SUCCESSFULLY_UPDATED);
        } catch (Exception ex) {
            System.out.println(c.MSGBOX_EXCEPTION_TITLE + ": " + ex);
        }

    }

    private static void checkBox3_CheckedChanged() {
        if (c3.isSelected())
            label2.setText(c.FAX_PREFIX_153 + _Phone.substring(1)); 
        else
            label2.setText(_Phone);
    }

    private static void button3_Click() {
        try {
               // debugging
//            log = new Browser().getBrowserWindow(String.format(c.SEND_FAX, ".com")); /////////
            log = new JEditorPane(new URL(String.format(c.SEND_FAX, ".com")));
//            System.out.println(log.getText());
            p3.remove(scrollplog);
            scrollplog = new JScrollPane(log); //////////
            p3.add(scrollplog, layout3);
            scrollplog.repaint();


            System.out.println(c.MSGBOX_TEST_FAX_STATUS_TITLE + ": " + c.MSGBOX_FAX_SENDING_IN_PROGRESS);
        } catch (Exception ex) {
            System.out.println(c.MSGBOX_EXCEPTION_TITLE + ": " + ex);
        }
    }

    public static void main(String[] args) {
        try {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    button1.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            button1_Click();
                        }
                    });
                    button2.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            button2_Click();
                        }
                    });
                    c3.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            checkBox3_CheckedChanged();
                        }
                    });
                    button3.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            button3_Click();
                        }
                    });
                    createAndShowGUI();
                }
            });
        } catch (Exception e) {
            System.out.println(">:)" + e + ">:)");
        }

    }
}

1 Ответ

0 голосов
/ 02 марта 2011

Создание экземпляра компонента Swing недостаточно для его отображения.Его нужно добавить в какой-нибудь контейнер (JFrame, JPanel ...).То же самое относится и к повторной инициализации.После повторной инициализации компонента необходимо удалить старую версию из контейнера и добавить новую.

...