2013-01-01 72 views
8

thể trùng lặp:
What components should I use for building a Java WYSIWYG HTML editorJava Swing Text Editor

Tôi là một newbie tổng số trong lập trình Java. Tôi phải làm trình soạn thảo văn bản trong Swing/AWT và tôi có một câu hỏi về nó. Làm cách nào để chỉnh sửa một từ đã chọn, ví dụ: thay đổi màu của từ? Tôi nên sử dụng thành phần nào và chức năng nào?

+2

Hãy xem hướng dẫn này: http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html – aly

+0

Xem thêm [* soạn thảo văn bản WYSIWYG trong Java *] (http://stackoverflow.com/q/853071/230513). – trashgod

+0

AWT không cung cấp bất kỳ thành phần nào hỗ trợ văn bản được định dạng, vì vậy điều này cũng có thể được coi là 'Swing'. –

Trả lời

10

Đối với người mới bắt đầu sử dụng Java Swing, hãy cố gắng giữ cho dự án này đơn giản. Để hiển thị nhiều màu sắc và nhiều kích thước trong cùng một tài liệu, yêu cầu nhiều mã hóa phức tạp và hiển thị html.

Cố gắng chỉ cung cấp bản sao cơ bản, cắt, dán các đối tượng địa lý vì chúng dễ triển khai hơn.

Để cung cấp các tính năng đó, JTextArea là đủ.

Hãy thử điều này. Đó là một soạn thảo văn bản khá đơn giản

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(); 
}