
Опытный
 
Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005
Репутация: 1 Всего: 2
|
| Код | /* * Main.java * * Created on 6 Апрель 2008 г., 20:05 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */
//package javaedit; import java.lang.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.tree.*; import java.awt.event.*; import java.awt.*; import java.util.*;
/** * * @author zmei */ public class Main { /** Creates a new instance of Main */ public Main() { new EditFrame(); } /** * @param args the command line arguments */ public static void main(String[] args) { SwingUtilities.invokeLater( new Runnable(){ public void run(){ new Main(); } } ); } }
/** *Описываем класс окна */ class EditFrame extends JFrame{ TreePanel treePanel; MainPanel mainPanel; public EditFrame(){ this.setTitle("Editor window"); this.setSize(500, 500); this.setDefaultCloseOperation(EXIT_ON_CLOSE); setLayout(new BorderLayout(10,10)); this.treePanel = new TreePanel(); this.mainPanel = new MainPanel(); add(this.treePanel, BorderLayout.WEST); add(this.mainPanel, BorderLayout.EAST); this.setVisible(true); } }
/** * Определяем панель, которая будет содержать дерево объектов системы тестов. **/ class TreePanel extends JPanel{ private JTree treeTest; private DefaultMutableTreeNode tempNode; public TreePanel(){ super(); this.tempNode = new DefaultMutableTreeNode("Структура"); this.treeTest = new JTree(tempNode); add(new JScrollPane(this.treeTest)); } }
/** * Определяем панель, которая будет содержать редактор и другие органы управления. *Панель содержит меню с кнопками "Догбавить", "Сохранить", "Удалить". Это меню *будем называть служебным *Меню с кнопка для редактора "Подчеркнуть", "Цвет", "Установить жирный шрифт", "Вставить" *"Копировать". Это меню будем называть меню редактора. **/ class MainPanel extends JPanel{ private Editor edit; private JButton Bold, Red, Underline, Italic; private JLabel label; private JMenuBar officialMenu, editorMenu; public MainPanel(){ super(); this.edit = new Editor(); CreateMenu(); this.Bold = new ButtonWrapper("Bold", "bold"); this.Red = new ButtonWrapper("Red", "red"); this.Underline = new ButtonWrapper("Underline", "underline"); this.Italic = new ButtonWrapper("Italic", "italic"); this.label = new JLabel("undefined"); this.edit = new Editor(); this.Bold.addActionListener(new ButtonClickHandler(this)); this.Red.addActionListener(new ButtonClickHandler(this)); this.Underline.addActionListener(new ButtonClickHandler(this)); this.Italic.addActionListener(new ButtonClickHandler(this)); add(this.edit); //add(this.officialMenu); } public Editor getEdit(){ return edit; } private void CreateMenu(){ //Набираем служебное меню JMenu menu = new JMenu("Default menu"); this.officialMenu.add(menu); //Набираем меню редактора } }
/** *Описываем класс редактора */ class Editor extends JTextPane{ public Editor(){ this.setSize(100, 100); } }
/*class ButtonClickHandler extends MouseAdapter{ EditFrame EditFrame; public ButtonClickHandler(EditFrame frameObj){ this.EditFrame = frameObj; } public void mouseClicked(MouseEvent ev){ this.EditFrame.label.setText(ev.paramString()); } }*/ /** *Описываем класс добавляющий в кнопку еще один аттрибут */ class ButtonWrapper extends JButton{ private String commandString; public ButtonWrapper(String name, String command){ super(name); this.commandString = command; } public String getCommandString(){ return this.commandString; } }
/** *Описываем класс-обработчик кнопок */ class ButtonClickHandler implements ActionListener{ private MainPanel MainPanel; private Editor edit; private StyledDocument EditDoc; private int startSelect, endSelect, length; private Style bold, underline, red, italic; private String str, command; private ButtonWrapper sourceButton; /** *@param containerEdit. *объект-контейнер, содержащий редактор текста. */ public ButtonClickHandler(MainPanel containerEdit){ this.MainPanel = containerEdit; this.edit = containerEdit.getEdit(); this.EditDoc = this.edit.getStyledDocument(); bold = this.EditDoc.addStyle("bold", null); underline = this.EditDoc.addStyle("underline", null); red = this.EditDoc.addStyle("red",null); italic = this.EditDoc.addStyle("italic",null); StyleConstants.setBold(bold, true); StyleConstants.setForeground(red, Color.RED); StyleConstants.setUnderline(underline, true); StyleConstants.setItalic(italic, true); } public void actionPerformed(ActionEvent ae){ //this.MainPanel.label.setText(ae.getActionCommand()); this.sourceButton = (ButtonWrapper)ae.getSource(); this.command = sourceButton.getCommandString(); this.startSelect = this.edit.getSelectionStart(); this.endSelect = this.edit.getSelectionEnd(); this.length = endSelect-startSelect; if(length!=0){ if(this.command=="underline"){ this.EditDoc.setCharacterAttributes(this.startSelect, length, underline, false); } else if(command=="bold"){ this.EditDoc.setCharacterAttributes(this.startSelect, length, bold, false); } else if(command=="red"){ this.EditDoc.setCharacterAttributes(this.startSelect, length, red, false); } else if(command=="italic"){ this.EditDoc.setCharacterAttributes(this.startSelect, length, italic, false); } } } }
|
|