# JDialog bestimmte Zeilen kursiv



## stylegangsta (15. Sep 2015)

Hallo zusammen,

bin weder bei Google, noch in der Forumsuche weiter gekommen, bzw. habe mein Problem nur für JLabel finden können.

Ich habe eine JDialog, welcher über die Klasse des JFrames aufgerufen wird. Funktioniert alles wunderbar. Also mit dem Aufruf oder Code an sich in dem Sinne kein Problem vorhanden.

Das Problem:
Es sind im JDialog Fenster, was sich öffnet ca. 30 Zeilen Text enthalten. Ist es möglich, dass ich zum Beispiel nur die Zeilen 25 und 26 Kursiv ausgebe?

Wenn ja, wäre der Code sehr nett und ob ich den in der Klasse des JFrame aufrufen muss oder in der JDialog Klasse.

Danke im Voraus

Aufruf des JDialog in der Klasse Frame:

```
/ Allgemeine Schaltflächen
    private JButton btnCredits;
   
    private class CreditsAction implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            String msg = new String();
            msg = "abcderfegfefgeg"
+ "\ngfagagdgdaga"
+ "\nasfgagsdgsgsg"
+"\n usw usf"
+"\nca. 30 Zeilen";
            Credits popup = new Credits(msg);
            popup.setLocationRelativeTo(AEKFrame.this);
            popup.setVisible(true);
            
        }
    }
```

Klasse JDialog:

```
package Buttons;

import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JTextPane;

@SuppressWarnings("serial")
public class Credits extends JDialog {
   
    public Credits(String msg) {
        setTitle("ÄK DataBase Reader \u00a9 by Dr.EAMTeam V 1.09.15");
        setResizable(false);
       
        JTextPane txtCredits = new JTextPane();
        txtCredits.setText(msg);
        txtCredits.setEditable(false);
        txtCredits.setBackground(getContentPane().getBackground());
        txtCredits.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
       
        getContentPane().add(txtCredits);
        pack();
    }
}
```


----------



## LatinFavourite (15. Sep 2015)

Hi, ich weiß nicht genau was du planst, aber du könntest ja deine einzelnen Strings in ein Array packen und dann prüfen, ob der jeweilige Index erreicht ist. In dem Fall kannst du dann den enstrechenden Font setzen.


----------



## stylegangsta (15. Sep 2015)

LatinFavourite hat gesagt.:


> Hi, ich weiß nicht genau was du planst, aber du könntest ja deine einzelnen Strings in ein Array packen und dann prüfen, ob der jeweilige Index erreicht ist. In dem Fall kannst du dann den enstrechenden Font setzen.


Wenn ich wüsste, wie das geht !?! 

Es geht einfach nur darum den Trademark Text von Microsoft anzuzeigen. Und der muss lt. Vorgabe von Microsoft Kursiv sein.

*Use Trademark notices*

Include an attribution of Microsoft ownership of the trademark(s) in the credit notice section of your documentation or advertisement—follow this format:

_Microsoft, Encarta, MSN, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
_
Habe es schon so versucht:
"<html><i>Microsoft, Encarta, MSN, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.</i></html>"

Hat aber auch nicht geklappt.


----------



## LatinFavourite (15. Sep 2015)

Alles klar. Was genau weißt du denn nicht?
Den Font kannst du ja so setzen.

```
Font font = new Font("Serial", Font.ITALIC, 12)
txtCredits.setFont(font);
```


Stimmt, sehe gerade dass mein Ansatz wohl nicht bei einer JTextPane funktioniert.

Und direktes Zeichnen über den Grafikkontext möchtest du nicht?

Vielleicht könnte das ja hilfreich sein.
http://www.java-forum.org/thema/jtextarea-schriftart-aendern.12334/


----------



## thet1983 (15. Sep 2015)

so??

```
String text = "<html><center>Dies ist ein normaler Text und <em> dieser ist kursiv </em>"+
                    " <strong>dieser ist fett</strong> </center></html>";
```


----------



## stylegangsta (15. Sep 2015)

LatinFavourite hat gesagt.:


> Alles klar. Was genau weißt du denn nicht?


In String Array packen und solche Sachen



LatinFavourite hat gesagt.:


> Den Font kannst du ja so setzen.
> 
> ```
> Font font = new Font("Serial", Font.ITALIC, 12)
> ...


Wird dann nicht der gesamte Text kursiv? Oder muss ich das einfach in die Zeile davor setzen?


----------



## stylegangsta (15. Sep 2015)

thet1983 hat gesagt.:


> so??
> 
> ```
> String text = "<html><center>Dies ist ein normaler Text und <em> dieser ist kursiv </em>"+
> ...


Scheint leider nicht als msg  übergabe funkitonieren

Ich kann mir vorstellen, dass man ein JLabel einbauen könnte, aber das muss doch auch ohne JLbabel machbar sein bestimmte Zeilen in JDialog Kursiv anzuzeigen


----------



## stylegangsta (15. Sep 2015)

Hab es gerade auch mit einem JLabel versucht. Leider verschwindet der gesamte andere Text der als Variable msg hat.


----------



## LatinFavourite (15. Sep 2015)

Hast du dir den Link einmal angesehen. Ansonsten ist das vielleicht hilfreich. 
https://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html


----------



## stylegangsta (15. Sep 2015)

LatinFavourite hat gesagt.:


> Hast du dir den Link einmal angesehen. Ansonsten ist das vielleicht hilfreich.
> https://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html


Habe ich, hat mir aber nicht wirklich geholfen, weil es zum eine JTextArea ist, indem der kursive Text steht und ich im Beispielcode nichts von ITALIC gesehen habe.

Ich möchte ja, dass es reiner JTextPane bleibt. Also, dass ich direkt bestimme, dass Zeile 3 zum Beispiel Kurisv ausgegeben wird. Aber das scheint nicht möglich zu sein. Hab auch nichts in Google entdecken können.


----------



## stylegangsta (15. Sep 2015)

stylegangsta hat gesagt.:


> Habe ich, hat mir aber nicht wirklich geholfen, weil es zum eine JTextArea ist, indem der kursive Text steht und ich im Beispielcode nichts von ITALIC gesehen habe.
> 
> Ich möchte ja, dass es reiner JTextPane bleibt. Also, dass ich direkt bestimme, dass Zeile 3 zum Beispiel Kurisv ausgegeben wird. Aber das scheint nicht möglich zu sein. Hab auch nichts in Google entdecken können.


Ohh sorry, hab den echten code gerade erst gefunden. Moment Bitte


----------



## stylegangsta (15. Sep 2015)

Ich geh davon aus, dass du auf diese Teil im Code hinaus willst

```
private JTextPane createTextPane() {
        String[] initString =
                { "This is an editable JTextPane, ",            //regular
                  "another ",                                   //italic
                  "styled ",                                    //bold
                  "text ",                                      //small
                  "component, ",                                //large
                  "which supports embedded components..." + newline,//regular
                  " " + newline,                                //button
                  "...and embedded icons..." + newline,         //regular
                  " ",                                          //icon
                  newline + "JTextPane is a subclass of JEditorPane that " +
                    "uses a StyledEditorKit and StyledDocument, and provides " +
                    "cover methods for interacting with those objects."
                 };
        String[] initStyles =
                { "regular", "italic", "bold", "small", "large",
                  "regular", "button", "regular", "icon",
                  "regular"
                };
```

Hab ich versucht, zuerst meckert er, dass es final sein muss und dann will statt den () diese [] haben und ein ;
Dann wird alles rot


----------



## stylegangsta (15. Sep 2015)

Entweder das klappt nicht oder ich füge add.documentStyles usw. an der falschen Stelle ein.


----------



## thet1983 (16. Sep 2015)

nur mal zum verständniss willst du jetzt den Text als JOptionPane oder JTextPane ausgeben??

mit JOPtionPane 

```
package test.demos;

import javax.swing.JOptionPane;

public class DialogDemo {
   public static void main(String[] args) {
     String text = "<html><center>Dieser Text ist normal, <em>"
         + "dieser ist kursiv</em>, und dieser ist "
         + "<strong>fett</strong></center></html>";

     JOptionPane.showMessageDialog(null, text);
   }
}
```
und bei einem JTextPane

```
String text = "<html><center>Dieser Text ist normal, <em>"
         + "dieser ist kursiv</em>, und dieser ist "
         + "<strong>fett</strong></center></html>";

     JTextPane tp = new JTextPane();
//*************
     tp.setContentType("text/html"); //-->  du willst text als html anzeigen!! <--
//*************    
     tp.setText(text);
```


----------



## stylegangsta (16. Sep 2015)

thet1983 hat gesagt.:


> nur mal zum verständniss willst du jetzt den Text als JOptionPane oder JTextPane ausgeben??



Ich habe ja im Thread ganz oben den Code, mit der Textausgabe, das sind ca. Zeilen, die über den ActionListener im JDialog erscheinen.

Author, Urheber, blablalbla etc.
Ich möchte davon einfach nur bestimmte Zeilen, zum Beispiel die Zeilen 5 + 6 Kursiv ausgeben, bzw. in meinem Fall sind es die letzten beiden Zeilen.


----------



## thet1983 (16. Sep 2015)

da sich an diesem Text ja nichts mehr ändert würde ich den,wie ich bereits geschrieben habe abtippen....

oder du bindest eine html seite ein wo das alles drinnen steht....


----------



## stylegangsta (16. Sep 2015)

thet1983 hat gesagt.:


> da sich an diesem Text ja nichts mehr ändert würde ich den,wie ich bereits geschrieben habe abtippen....
> 
> oder du bindest eine html seite ein wo das alles drinnen steht....



Meinst du das so?


```
/ Allgemeine Schaltflächen
    private JButton btnCredits;

    private class CreditsAction implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            String msg = new String();
            msg = "abcderfegfefgeg"
+ "\ngfagagdgdaga"
+ "\nasfgagsdgsgsg";
   String text ="<html><center>Zeile 6 <em>"
         +"Zeile 7</em>, Weiterhine Zeile 7 "
         +"<strong>Zeile 8</strong></center></html>";

     [URL='http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+joptionpane']JOptionPane[/URL].showMessageDialog(null, text);
+"\n usw usf"
+"\nca. 30 Zeilen";
            Credits popup = new Credits(msg);
            popup.setLocationRelativeTo(AEKFrame.this);
            popup.setVisible(true);
         
        }
    }
```


----------



## thet1983 (16. Sep 2015)

was ist Credits? (JFrame, JDialog ??? )

übernimm den text als JOptionPane oder JTextPane 

```
JTextPane tp = new JTextPane();
tp.setContentType("text/html"); // nicht vergessen!!
tp.setText(text);
// ....
```


```
String text = "<html><center>"
         + "<h2><b>Use Trademark notices</h2><b>"
         + "<p>Include an attribution of Microsoft ownership of the trademark(s) in the credit notice "
         + "section of your documentation or advertisement—follow this format:</p>"
         + "<p><em>Microsoft, Encarta, MSN, and Windows are either registered trademarks or trademarks of "
         + "Microsoft Corporation in the United States and/or other countries.</em></p></center></html>";
```


----------



## stylegangsta (16. Sep 2015)

thet1983 hat gesagt.:


> was ist Credits? (JFrame, JDialog ??? )
> 
> übernimm den text als JOptionPane oder JTextPane
> 
> ...



Credits ist die Klase, die erbt vom JDialog.

-----------------------------------------------------
GELÖST DANKE FÜR DIE HILFE
-----------------------------------------------------


----------



## stylegangsta (16. Sep 2015)

--------------------------------------------------


GELÖST


---------------------------------------------------


----------



## stylegangsta (16. Sep 2015)

Für die Nachwelt:

Codeabschnitt im JFrame

```
@Override
        public void actionPerformed(ActionEvent e) {
            String msg = new String();
            msg = "<html><left><p style='font-size:9px;'><font face=\''>"
                    + "ÄK DataBase Reader \u00a9 by Dr.EAMTeam<br>" + "Version Number: 1.09.15<br><br>"
                    + "Project: Dr.EAMTeam<br>" + "Zeilexyz<br>" + "Zeile<br><br>"
                    + "Text<br><br>"
                    + "<em>Microsoft, Encarta, MSN, and Windows are either registered trademarks or trademarks of<br>"
                    + "Microsoft Corporation in the United States and/or other countries.</em></left></p></html>";
            Credits popup = new Credits(msg);
            popup.setLocationRelativeTo(AEKFrame.this);
            popup.setVisible(true);
        }
    }
```

Code Klasse Credits

```
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JTextPane;

@SuppressWarnings("serial")
public class Credits extends JDialog {

    public Credits(String msg) {
        setTitle("ÄK DataBase Reader \u00a9 by Dr.EAMTeam V 1.09.15");
        setResizable(false);

        JTextPane txtCredits = new JTextPane();
        txtCredits.setContentType("text/html");
        txtCredits.setText(msg);
        txtCredits.setEditable(false);
        txtCredits.setBackground(getContentPane().getBackground());
        txtCredits.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));

        getContentPane().add(txtCredits);
        pack();
    }
}
```

Und so siehts aus:


----------

