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();
}
einen Blick auf dieses Tutorial Nehmen: http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html – aly
Siehe auch [* WYSIWYG-Texteditor in Java *] (http://stackoverflow.com/q/853071/230513). – trashgod
Die AWT bietet keine Komponenten an, die formatierten Text unterstützen, daher könnte dies auch als "Swing" bezeichnet werden. –