Dla początkującego użytkownika Java Swing należy starać się, aby projekt był prosty. Aby pokazać wiele kolorów i wiele rozmiarów w tym samym dokumencie, wymaga dużo skomplikowanego kodowania i renderowania html.
Staraj się po prostu dostarczyć podstawowe kopie, wyciąć, wkleić funkcje, ponieważ są łatwiejsze do wdrożenia.
Aby zapewnić te funkcje, JTextArea jest wystarczająca.
Spróbuj tego. Jest to dość prosty edytor tekstu
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();
}
Spójrz na tym tutorialu: http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html – aly
Zobacz także [* WYSIWYG edytor tekstu w Javie *] (http://stackoverflow.com/q/853071/230513). – trashgod
AWT nie oferuje żadnych komponentów obsługujących sformatowany tekst, więc równie dobrze można by go uznać za "Swing". –