Avatar billede tuidoi Nybegynder
15. marts 2009 - 02:05 Der er 6 kommentarer og
1 løsning

JTextPane - Hvordan virker skriver jeg forskellige styres?

Hej

Jeg har læst mig til at JTextPane er den tekst component jeg skal bruge hvis jeg ønsker der skal stå tekst med forskellige skrifttyper i component..

Hvordan laver jeg en metode, der skriver en streng ind i JTextPaned med enten Times New Roman eller Ariel alt efter hvad man har givet af input som parameter?

Problemet er at jeg jo ikke blot kan hente teksten der er der i forvejen og pludse den med den nye streng, mens jeg ændrer skriftype for så kommer det hele jo ud i den sidst satte skrifttype :/

- Så hvordan skriver jeg en streng i et Jtextpane med ny skrifttype uden at ændre det der står der i forvejen?


På forhånd tak for svar! :)
Avatar billede tuidoi Nybegynder
15. marts 2009 - 02:08 #1
Lol.. der gik det vidst lidt for stærkt!
Mener selvfølgelig:
JTextPane - Hvordan virker/skriver jeg forskellige skrifttyper ind?

Kan man rette overskrift?
Avatar billede arne_v Ekspert
15. marts 2009 - 04:16 #2
Følgende program er aldeles ubrugeligt, men se om ikke det kan inspirere dig lidt:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class JTP extends JFrame implements ActionListener {
    private JTextPane p;
    private JButton btn;
    public JTP() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Some JTextPane fun");
        getContentPane().setLayout(new BorderLayout());
        p = new JTextPane();
        getContentPane().add(p, BorderLayout.CENTER);
        btn = new JButton("Add som text in random attributes");
        btn.addActionListener(this);
        getContentPane().add(btn, BorderLayout.SOUTH);
        pack();
    }
    private Random rng = new Random();
    private static final Color[] cols = { Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW, Color.BLACK, Color.WHITE, Color.ORANGE, Color.PINK, Color.CYAN, Color.MAGENTA };
    private static final String[] fontfam = { "Arial", "Arial Narrow", "Book Antiqua", "Century Gothic", "Courier New", "Lucida Sans", "Palatino Linotype", "SansSerif", "Serif", "Times New Roman", "Verdana" };
    @Override
    public void actionPerformed(ActionEvent e) {
        StyledDocument doc = p.getStyledDocument();
        try {
            MutableAttributeSet attrs = p.getInputAttributes();
            StyleConstants.setFontFamily(attrs, fontfam[rng.nextInt(fontfam.length)]);
            StyleConstants.setFontSize(attrs, 5 + rng.nextInt(20));
            System.out.println(StyleConstants.getFontSize(attrs));
            StyleConstants.setItalic(attrs, rng.nextDouble() > 0.5);
            StyleConstants.setBold(attrs, rng.nextDouble() > 0.5);
            StyleConstants.setForeground(attrs, cols[rng.nextInt(cols.length)]);
            StyleConstants.setBackground(attrs, cols[rng.nextInt(cols.length)]);
            doc.insertString(doc.getLength(), "Dette er en test\r\n", attrs);
            pack();
        } catch (BadLocationException e1) {
        }
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JTP();
                f.setVisible(true);
            }
        });
    }
}
Avatar billede tuidoi Nybegynder
15. marts 2009 - 13:05 #3
Jo tak.. Tror godt jeg forstår meningen med dette. Når man trykker på knappen udskriver den teksten med en tilfældig skriftstørrelse.. Det virker for mig som at, det fungerer lidt på samme måde som med JTable's altså de har en "model" som man kan tilføje til også opdateres selve componenten efter denne.
Avatar billede tuidoi Nybegynder
15. marts 2009 - 13:10 #4
ja det vil sige den sætter jo faktisk alt tilfældigt både farve, skrifttype osv. Så meget skal jeg slet ikke bruge, men det giver alligevel en god forståelse :)

Mange Tak.. - Lig et svar!
Avatar billede arne_v Ekspert
15. marts 2009 - 17:23 #5
:-)

kommer her
Avatar billede netkoen Nybegynder
17. marts 2009 - 10:03 #6
Med netbeans får du en WYSIWYG GUI builder hvor du kan sætte font, farve, størrelse osv. på de forskellige tekst componenter.

Personligt bruger jeg så netbeans til at sætte de forskellige ting, går dernæst ind og ser på den generet kode og meget hurtigt at jeg et svar på hvordan man kalder de forskellige metoder.

Det er bare min måde, håber du kan bruge det.
Avatar billede tuidoi Nybegynder
17. marts 2009 - 17:43 #7
Ja ved det. Der findes også et plugin til eclipse som det er muligt at bruge. Men kan bedst lide at sætte det hele op fra bunden og få forståelsen for hvordan de forskellige componenter virker sammen. Men det var da stadig et ganske udemærket forslag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester