JEditorPane не работает должным образом, если я его реализую, то все идет не так

1

Я нахожусь в chalange с моим другом, чтобы сделать лучшую программу, он решил сделать инструмент боли, в то время как я решил сделать веб-браузер. В настоящее время я пытаюсь реализовать эти поля. если я добавляю адресную строку и кнопку, все работает так, как сказано, но когда я помещаю JEditorPane, то на дисплее не отображается то, что сказано, чтобы показывать.

CODE без JEditorPane (все работает):

import java.awt.*;
import javax.swing.*;
public class browserPannel
{
    public static void main(String[] arg)
    {
        JFrame browser = new JFrame("A Nun In A Weelchair");
        browser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        browser.setLocationRelativeTo(null);
        browser.setSize(1000,700);
        browser.setVisible(true);
        browser.setResizable(false);

        JTextField url = new JTextField();
        url.setSize(890,30);
        url.setVisible(true);
        url.setLocation(15,15);

        JPanel holder = new JPanel();
        holder.setBackground(Color.lightGray);
        holder.setSize(1000,700);

        JButton send = new JButton("Send");
        send.setSize(75,30);
        send.setVisible(true);
        send.setLocation(906,15);

        //JEditorPane htmlc = new JEditorPane();
        //htmlc.setBackground(Color.red);
        //htmlc.setEditable(true);
        //htmlc.setContentType("text/html");
        //htmlc.setSize(500,500);
        //htmlc.setVisible(true);
        //htmlc.setLocation(15,50);




        holder.add(url);
        holder.add(send);
        //holder.add(htmlc);
        browser.getContentPane().add(holder);
    }
}

ИЗОБРАЖЕНИЕ Без JEditorPanehttp все работает, как сказано: http://i.stack.imgur.com/hONs3.png

CODE С JEditorPane (все не работает, как сказано):

import java.awt.*;
import javax.swing.*;
public class browserPannel
{
    public static void main(String[] arg)
    {
        JFrame browser = new JFrame("A Nun In A Weelchair");
        browser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        browser.setLocationRelativeTo(null);
        browser.setSize(1000,700);
        browser.setVisible(true);
        browser.setResizable(false);

        JTextField url = new JTextField();
        url.setSize(890,30);
        url.setVisible(true);
        url.setLocation(15,15);

        JPanel holder = new JPanel();
        holder.setBackground(Color.lightGray);
        holder.setSize(1000,700);

        JButton send = new JButton("Send");
        send.setSize(75,30);
        send.setVisible(true);
        send.setLocation(906,15);

        JEditorPane htmlc = new JEditorPane();
        htmlc.setBackground(Color.red);
        htmlc.setEditable(true);
        htmlc.setContentType("text/html");
        htmlc.setSize(500,500);
        htmlc.setVisible(true);
        htmlc.setLocation(15,50);




        holder.add(url);
        holder.add(send);
        holder.add(htmlc);
        browser.getContentPane().add(holder);
    }
}

ИЗОБРАЖЕНИЕ С JEditorPane все не работает, как сказано: http://i.stack.imgur.com/3ayeP.png

Я пробовал удалить некоторые из.set и я hav, попробовал посмотреть onine, я также попробовал запустить JEditorPpane самостоятельно, но я не могу настроить для него переменные (например, местоположение, размер и т.д.).

  • 1
    В JFrame вызовите add() , pack() затем setVisible() .
Теги:
browser
jeditorpane

1 ответ

0
Лучший ответ

У вас возникают проблемы, потому что FlowLayout, который является менеджером макетов по умолчанию для JPanel, принимает собственные решения о том, как управлять панелью holder содержать ее содержимое.

  • Используйте соответствующие макеты. Подробнее см. " Укладка компонентов в контейнере".
  • Начните свой пользовательский интерфейс в контексте Диспетчерского потока событий. Дополнительные сведения см. В разделе " Начальные потоки".
  • Макет, пакет, а затем сделайте свой кадр видимым.
  • С содержимым, которое, вероятно, превысит видимые требования вашего окна, вы должны использовать JScrollPane s. Подробнее о том, как использовать панели прокрутки

Изображение 174551

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class BrowserPannel {

    public static void main(String[] arg) {
        JFrame browser = new JFrame("A Nun In A Weelchair");
        browser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        browser.setLocationRelativeTo(null);

        JTextField url = new JTextField(20);

        JPanel header = new JPanel();
        header.setBackground(Color.lightGray);

        JButton send = new JButton("Send");

        JEditorPane htmlc = new JEditorPane();
        htmlc.setBackground(Color.red);
        htmlc.setEditable(true);
        htmlc.setContentType("text/html");

        header.add(url);
        header.add(send);
        browser.getContentPane().add(header, BorderLayout.NORTH);
        browser.getContentPane().add(new JScrollPane(htmlc));

        browser.pack();
        browser.setVisible(true);

    }
}
  • 0
    Помещает ли setPack и setVisible в кнопку кода, или это никак не влияет на предварительное исполнение? и как я могу сделать расширение JTextField с расширением JFrame?
  • 0
    Это не повлияет на производительность, но сделает компоненты, которые вы добавляете в кадр, видимыми, когда кадр впервые становится видимым, в противном случае вам нужно будет вызвать validate для кадра, чтобы принудительно обновить его, что приведет к снижению производительности. Чтобы расширить JTextField по всему фрейму, вам нужно использовать другой менеджер компоновки. Что-то вроде GridBagLayout сделает эту работу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню