2013-01-01 8 views
8

Mögliche Duplizieren:
What components should I use for building a Java WYSIWYG HTML editorJava Swing-Text-Editor

Ich bin ein totaler Neuling in Java-Programmierung. Ich muss Texteditor in Swing/AWT machen und ich habe eine Frage dazu. Wie kann ich ein ausgewähltes Wort bearbeiten, z. B. die Farbe ändern? Welche Komponente und welche Funktionen soll ich verwenden?

+2

einen Blick auf dieses Tutorial Nehmen: http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html – aly

+0

Siehe auch [* WYSIWYG-Texteditor in Java *] (http://stackoverflow.com/q/853071/230513). – trashgod

+0

Die AWT bietet keine Komponenten an, die formatierten Text unterstützen, daher könnte dies auch als "Swing" bezeichnet werden. –

Antwort

10

Für einen Anfänger Java Swing versuchen Sie, dieses Projekt einfach zu halten. Um mehrere Farben und mehrere Größen im selben Dokument anzuzeigen, ist viel komplexes Codieren und Rendern von HTML erforderlich.

Versuchen Sie, nur die grundlegenden Funktionen zum Kopieren, Ausschneiden und Einfügen bereitzustellen, da sie einfacher zu implementieren sind.

Um diese Funktionen bereitzustellen, ist eine JTextArea ausreichend.

Versuchen Sie es. Es ist ein ziemlich einfacher Texteditor

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Document extends JFrame implements ActionListener 
{ 
private JTextArea ta; 
private int count; 
private JMenuBar menuBar; 
private JMenu fileM,editM,viewM; 
private JScrollPane scpane; 
private JMenuItem exitI,cutI,copyI,pasteI,selectI,saveI,loadI,statusI; 
private String pad; 
private JToolBar toolBar; 
public Document() 
{ 
    super("Document"); 
    setSize(600, 600); 
    setLocationRelativeTo(null); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Container pane = getContentPane(); 
    pane.setLayout(new BorderLayout()); 

    count = 0; 
    pad = " "; 
    ta = new JTextArea(); //textarea 
    menuBar = new JMenuBar(); //menubar 
    fileM = new JMenu("File"); //file menu 
    editM = new JMenu("Edit"); //edit menu 
    viewM = new JMenu("View"); //edit menu 
    scpane = new JScrollPane(ta); //scrollpane and add textarea to scrollpane 
    exitI = new JMenuItem("Exit"); 
    cutI = new JMenuItem("Cut"); 
    copyI = new JMenuItem("Copy"); 
    pasteI = new JMenuItem("Paste"); 
    selectI = new JMenuItem("Select All"); //menuitems 
    saveI = new JMenuItem("Save"); //menuitems 
    loadI = new JMenuItem("Load"); //menuitems 
    statusI = new JMenuItem("Status"); //menuitems 
    toolBar = new JToolBar(); 

    ta.setLineWrap(true); 
    ta.setWrapStyleWord(true); 

    setJMenuBar(menuBar); 
    menuBar.add(fileM); 
    menuBar.add(editM); 
    menuBar.add(viewM); 

    fileM.add(saveI); 
    fileM.add(loadI); 
    fileM.add(exitI); 

    editM.add(cutI); 
    editM.add(copyI); 
    editM.add(pasteI);   
    editM.add(selectI); 

    viewM.add(statusI); 

    saveI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); 
    loadI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK)); 
    cutI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); 
    copyI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); 
    pasteI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); 
    selectI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); 

    pane.add(scpane,BorderLayout.CENTER); 
    pane.add(toolBar,BorderLayout.SOUTH); 

    saveI.addActionListener(this); 
    loadI.addActionListener(this); 
    exitI.addActionListener(this); 
    cutI.addActionListener(this); 
    copyI.addActionListener(this); 
    pasteI.addActionListener(this); 
    selectI.addActionListener(this); 
    statusI.addActionListener(this); 

    setVisible(true); 
} 
public void actionPerformed(ActionEvent e) 
{ 
    JMenuItem choice = (JMenuItem) e.getSource(); 
    if (choice == saveI) 
    { 
     //not yet implmented 
    } 
    else if (choice == exitI) 
     System.exit(0); 
    else if (choice == cutI) 
    { 
     pad = ta.getSelectedText(); 
     ta.replaceRange("", ta.getSelectionStart(), ta.getSelectionEnd()); 
    } 
    else if (choice == copyI) 
     pad = ta.getSelectedText(); 
    else if (choice == pasteI) 
     ta.insert(pad, ta.getCaretPosition()); 
    else if (choice == selectI) 
     ta.selectAll(); 
    else if (e.getSource() == statusI) 
    { 
     //not yet implmented 
    } 
} 
public static void main(String[] args) 
{ 
    new Document(); 
}