11. april 2003 - 22:42Der er
11 kommentarer og 1 løsning
Bold & Understegning
Jeg har et JTextArea. Jeg vil gerne have lavet det sådan at hvis jeg markerer noget at den skrevne tekst så kan jeg lave den bold og/eller understrege den markerede del af teksten. Bold/Understregning skal ske ved genvejstaster Kan dette lade sige gøre? Det kan det vel ikke med et JTextArea? Hvis det kan lade sig gøre, hvordan gør man det så?
private DefaultStyledDocument createDocument() { document = new DefaultStyledDocument();
String init[] = { "Quick brown fox jumps over lazy dog", "Quick brown fox jumps over lazy dog", "Quick brown fox jumps over lazy dog", "Quick brown fox jumps over lazy dog", };
SimpleAttributeSet[] atts = new SimpleAttributeSet[4];
atts[0] = new SimpleAttributeSet(); StyleConstants.setFontFamily(atts[0], "SansSerif"); StyleConstants.setFontSize(atts[0], 16);
atts[1] = new SimpleAttributeSet(); StyleConstants.setBold(atts[1], true);
atts[2] = new SimpleAttributeSet(); StyleConstants.setItalic(atts[2], true);
atts[3] = new SimpleAttributeSet(); StyleConstants.setForeground(atts[3], Color.red);
try { for (int i = 0; i < init.length; i ++) { document.insertString(document.getLength(), init[i] + "\n", atts[i]); } } catch (BadLocationException ble) { ble.printStackTrace(); } return document; }
private JMenuBar createMenu() { menu = new JMenuBar();
menu.add(fileMenu = new JMenu("Filer")); JMenuItem exitItem = new JMenuItem("Afslut"); exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); fileMenu.add(exitItem);
menu.add(editMenu = new JMenu("Rediger"));
Action action = new StyledEditorKit.BoldAction(); action.putValue(Action.NAME, "Fed"); editMenu.add(action);
action = new StyledEditorKit.ItalicAction(); action.putValue(Action.NAME, "Kursiv"); editMenu.add(action);
action = new StyledEditorKit.UnderlineAction(); action.putValue(Action.NAME, "Understregning"); editMenu.add(action);
Det virker jo rigtig godt. Jeg har blot erstattet mine JTextAreas med JTextPanes. Jeg har dog ikke brugt "DefaultStyledDocument", hvad gør det?
Jeg har dog et problem. Jeg læser texten fra min JTextPane med pane.getText() og skriver det ned i en fil (xml) hvordan får jeg den til at gemme understregninger osv?
Lige en tilføjelse til min sidste kommentar.... Det jeg gør er at jeg skriver dataene ned i en xml fil ud fra et objekt. Et firma objekt består fx af en note streng. Den er denne streng som JTextPane i første omgang læses ned i. Skal man så bruge dokument som en paramenter i firma istedet for streng?
Jeg bruger min xml fil som database. Jeg henter skriver så til den fra programmet (når man gemmer). Dvs. Jeg skal have skrevet det der står i JTextPane'n i xml-filen, således at når jeg starter programmet næste gang igen, så er der formateringer (rød, grøn, understreget osv.) som jeg sluttede programmet med da jeg forlod det sidst.
altså i stil med <kunde> <navn font="SansSerif" color="#443356" underline="true"> Børge Holm </navn> <firma font="Monotype"> Spanking Banking A/SS </firma> </kunde>
Eller hvad er det HELT nøjagtig du vil. Det er jo svært at flette BÅDE formatering OG data-struktur ind i et XML dokument (kan folk der har lavet et XSLT stylesheet skrive under på).
Det bliver et større helvede først at omskrive alle styles til XML og derefter parse styles fra det destruktive format. Det er nemmere bare at serialisere textpane objektet ud så.
Jeg bruger jo ikke min xml fil til andet end en database, jeg bruger den med andre ord ikke som noget der skal ses. Hvis man udskriver teksten som står i et JTextPane som dit eks. viht, vil det så bare være teksten eller vil det være teksten + koder for farver, str. skrifttype osv. eller hvordan det nu er lavet? For hvis det er det, kan man vel bare indlæse det igen? Seialisering synes jeg ikke rigtigt om da jeg ændre i mine klasser ret tit....
Okidoki, jeg nøjes med mit JTextArea indtil videre så... Forsat god weekend, mvh Torben
Synes godt om
Ny brugerNybegynder
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.