HELP - w aplikacji Java Swing.

0

Jak w korporacyjnych projektach(ja robię w sumie coś małego) najlepiej stworzyć obsługę pliku pomocy ?

Jakie narzędzie do tego użyć?

Tak myśle, że zawartość HELPa to pewnie najlepiej stworzyć w HTML i potem otwierać ten pliczek po wywołaniu helpa z aplikacji.
Ale czy tak będzie dobrze, i w jakim Panelu/Oknie otworzyć coś takiego aby ładnie to wyglądało i miało przejścia do podstron) czy taki JTextArea poradzi sobię z tym ??

I ostatnie pytanie, jak taką stronę, czyli plik HTML'a zaszyć w pliku jar.

1

Odpowiedź na pierwsze. JTextArea jest nieodpowiedni, użyj JEditorPane.

Odpowiedź na drugie, wrzuć plik pomocy (Help.html) do jara (jar to zip). Potem wyświetlaj html. Jako URL podaj this.getClass().getResource("/Help.html"). Tak będzie dobrze jeżeli umieścisz plik Help.html na szczycie jara.

0

Jak z tego pliku wydobyć
HTMLDocument

aby móc użyc w JTextPane ?

1
JEditorPane ep=new JEditorPane();
ep.setEditable(false);
try
{
    ep.setPage(url);
}
catch (Exception e)
{
    ...
}
ep.setDocument((HTMLDocument)ep.getDocument());

Warto też ep wrzucić na JScrollPane.

0

O, to wszystko rozumie, chodzi mi o krok przed tym.
Czyli wyciągam plik:
File file = this.getClass().getResource("/Help.html").

I jak z tego zrobić HTMLDocument, aby potem wrzucić do JScrollPane

1

Czytaj posty uważniej:

Jako URL podaj this.getClass().getResource("/Help.html")

0

Bardzo ładnie wszystko działa.

A mam jeszcze inne pytanie, czy idzie rozszerzyć działania JTextPane, aby obsługiwał 'linki' do podstron ?

Jak coś takiego idzie zorganizować, nie jest to konieczne ale bardzo ładnie by wyglądało.

1

Da się, musisz do JEdytorPane podpiąć HyperlinkListenera.

0

Dlaczego jak wczytuję stronę do JTextPane,
mam takiego '"src/help/index.html"' linka do pliku.

A jak zbuduję 'jara' i prubuję go odpalić to nie chce załadować stronki, mimo, że plik 'index.html' jest w 'jarze' w tym samym katalogu.

Jak to zrobić by było dobrze w obu przypadkach?

1

Nadal czytasz nieuważnie, link ma się zaczynać od "/".

0

Nie wiem dlaczego ale żadna poniższa kombinacja nie działa:
public static String HELP_INDEX = "/src/help/index.html";
public static String HELP_INDEX = "/help/index.html";
public static String HELP_INDEX = "/index.html";

Działa tylko to:
public static String HELP_INDEX = "src/help/index.html";
i to wyłącznie przy uruchomieniu z NetBeansa

1

Nie wierzę, przed chwilą zmieniłem specjalnie kod jednego z projektów, przeniosłem plik pomocy do podkatalogu src/help/index.html.

//zarówno to
ep.setPage(getClass().getResource("/src/help/index.html"));
//jak i to
ep.setPage(this.getClass().getResource("/src/help/index.html"));

działa i w jarze i w Eclipse.

0

Działa ale coś takiego

public static String HELP_INDEX = "/help/index.html";

Miałem taką dziwną metodę:

        
        URL url = this.getClass().getResource(HELP_INDEX);
        File file = new File(HELP_INDEX);
        try {
            url = file.toURL();
        } catch (MalformedURLException ex) {
            Logger.getLogger(MethodsHelp.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            jEditorPane.setPage(url);
        } catch (Exception ex) {
            Logger.getLogger(MethodsImages.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Problem loading");
        }
        jEditorPane.setDocument((HTMLDocument) jEditorPane.getDocument());

Więc pewnie tu coś było nie tak.

Najważniejsze, że działa i z NB i z jar'a.
Dzięki wielkie jeszcze raz

0

Niepotrzebnie robiłeś dwie konwersje (tam i z powrotem). Wystarczy tak:

URL url = this.getClass().getResource(HELP_INDEX);
try {
   jEditorPane.setPage(url);
0

Wszystko działa pięknie.

Mam pytanie, bo nie mogę znaleŹć na google w sumie konkretów.

Jakie możliwości są JTextPane, wiem, że wyświetla strony HTML, i obsługuje linki.

A czy :

  • obsługuje JavaScript, jeśli tak to w jakim stopniu, jaką wersję
  • jaką wersję obsługuję HTML (np. 5) ?? :) wiem, pewnie dużo wymagam ale pytam z ciekawości

1 użytkowników online, w tym zalogowanych: 0, gości: 1