Format text in JEditorPane or JTextPane (Part 1)

Các bạn chắc chắn đã từng dùng các chương trình cho phép định dạng văn bản như Microsoft Office, hay thành phần có sẵn trong window đó là Wordpad. Java cũng cho phép chúng ta tạo ra chương trình có tính năng tương tự như vậy với cách hết sức đơn giản bằng cách sử dụng các gói editor kit.

Ví dụ như muốn tạo 1 nút bấm định dạng chữ in đậm (Bold) ta có thể dùng StyledEditorKit.
Để tạo nút định dạng in đậm (Bold) có rất nhiều cách, ở đây minhw sẽ trình bày 2 cách đơn giản nhất.

Code:
import javax.swing.*;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledEditorKit;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

//Tạo Toolbar
JToolBar toolBar;
toolBar = new JToolBar();

//Thêm 1 panel vào JToolBar
final JPanel panel = new JPanel();
panel.setLayout(null);
toolBar.add(panel);

//Tạo ScrollPane
scrollPane = new JScrollPane();

Tạo EditorPane và add vào JScrollPane
editorPane = new JEditorPane();
editorPane.setContentType("text/html");
scrollPane.setViewportView(editorPane);


//Tạo Action và insert image vào

URL boldimage = main.class.getResource("images/bold.gif");
Action setbold = new StyledEditorKit.BoldAction();
setbold.putValue(Action.SMALL_ICON, new ImageIcon(boldimage));


//Add vào Button (Ở đây tôi sẽ dùng JToogleButton)

final JToggleButton toggleButton = new JToggleButton(setbold);
toggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
editorPane.grabFocus();
}
});
toggleButton.setBounds(141, 0, 22, 22);
toggleButton.setText("");
panel.add(toggleButton);


Cách khác: chỉ việc tạo Button vào gán Action thẳng vào đó

final JToggleButton toggleButton = new JToggleButton();
toggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new StyledEditorKit.BoldAction().actionPerformed(null);
editorPane.grabFocus();
}
});
toggleButton.setBounds(141, 0, 22, 22);
toggleButton.setText("");
panel.add(toggleButton);

Tương tự cho các Action sau:
StyledEditorKit.BoldAction();
StyledEditorKit.ItalicAction();
StyledEditorKit.UnderlineAction();

Nhớ add JToolBar và JScrollPane vào Container :D

No comments yet