Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация кода 
:(
    Опции темы
drakkon
Дата 21.5.2013, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.7.2007

Репутация: нет
Всего: нет



Всем привет. Пишу блокнот аналогичный стандартному блокноту Windows. Еще не дописал, но код рабочий (не весь функционал работает). Вопрос(ы) следующий - верно ли я организовал код, можно ли так писать (или это больше ###код?) Заранее спасибо за ответы и ногами сильно не пинайте (прошу прощения за отсутствие документирования и большую стену текста).

Код

package notepad;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.print.PrinterException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
public class Notepad extends JFrame{
    private JEditorPane editor;
    private JFrame notepadFrame;
    private JPopupMenu popup;
    public Notepad(){
        notepadFrame = new JFrame("Блокнот");
        JMenuBar menubar = new JMenuBar();
        popup = new JPopupMenu();
        JMenuItem popupUndoMenu = new JMenuItem("Отменить");
        JMenuItem popupCutMenu = new JMenuItem("Вырезать");
        JMenuItem popupCopyMenu = new JMenuItem("Копировать");
        JMenuItem popupPasteMenu = new JMenuItem("Вставить");
        JMenuItem popupDeleteMenu = new JMenuItem("Удалить");
        JMenuItem popupSelectAllMenu = new JMenuItem("Выделить все");
        popup.add(popupUndoMenu);
        popup.addSeparator();
        popup.add(popupCutMenu);
        popup.add(popupCopyMenu);
        popup.add(popupPasteMenu);
        popup.add(popupDeleteMenu);
        popup.addSeparator();
        popup.add(popupSelectAllMenu);
        popupCutMenu.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){CutActionPerformed(evt);}});
        popupCopyMenu.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){CopyActionPerformed(evt);}});
        popupPasteMenu.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){PasteActionPerformed(evt);}});
        popupSelectAllMenu.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){SelectAllActionPerformed(evt);}});
        JMenu menuFile = new JMenu("Файл");
        JMenu menuEdit = new JMenu("Правка");
        JMenu menuFormat = new JMenu("Формат");
        JMenu menuView = new JMenu("Вид");
        JMenu menuHelp = new JMenu("Справка");
        JMenuItem menuItemCreate = new JMenuItem("Создать");
        menuItemCreate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
        menuItemCreate.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){CreateFileActionPerformed(evt);}});
        JMenuItem menuItemOpen = new JMenuItem("Открыть");
        menuItemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
        menuItemOpen.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){OpenFileActionPerformed(evt);}});
        JMenuItem menuItemSave = new JMenuItem("Сохранить");
        menuItemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
        menuItemSave.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){SaveFileActionPerformed(evt);}});
        JMenuItem menuItemSaveAs = new JMenuItem("Сохранить как...");
        menuItemSaveAs.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){SaveAsFileActionPerformed(evt);}});
        JMenuItem menuItemPage = new JMenuItem("Параметры страницы...");
        //menuItemPage.addActionListener(listener);
        JMenuItem menuItemPrint = new JMenuItem("Печать...");
        menuItemPrint.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
        menuItemPrint.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){PrintActionPerformed(evt);}});
        JMenuItem menuItemExit = new JMenuItem("Выход");
        menuItemExit.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){ExitActionPerformed(evt);}});
        menuFile.add(menuItemCreate);
        menuFile.add(menuItemOpen);
        menuFile.add(menuItemSave);
        menuFile.add(menuItemSaveAs);
        menuFile.addSeparator();
        menuFile.add(menuItemPage);
        menuFile.add(menuItemPrint);
        menuFile.addSeparator();
        menuFile.add(menuItemExit);
        JMenuItem menuItemUndo = new JMenuItem("Отменить");
        menuItemUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
        //menuItemUndo.addActionListener(listener);
        JMenuItem menuItemCut = new JMenuItem("Вырезать");
        menuItemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
        menuItemCut.setEnabled(false);
        menuItemCut.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){CutActionPerformed(evt);}});
        JMenuItem menuItemCopy = new JMenuItem("Копировать");
        menuItemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
        menuItemCopy.setEnabled(false);
        menuItemCopy.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){CopyActionPerformed(evt);}});
        JMenuItem menuItemPaste = new JMenuItem("Вставить");
        menuItemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
        menuItemPaste.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){PasteActionPerformed(evt);}});
        JMenuItem menuItemDelete = new JMenuItem("Удалить");
        menuItemDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
        menuItemDelete.setEnabled(false);
        //menuItemDelete.addActionListener(listener);
        JMenuItem menuItemFind = new JMenuItem("Найти...");
        menuItemFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK));
        menuItemFind.setEnabled(false);
        //menuItemFind.addActionListener(listener);
        JMenuItem menuItemFindNext = new JMenuItem("Найти далее");
        menuItemFindNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0));
        menuItemFindNext.setEnabled(false);
        //menuItemFindNext.addActionListener(listener);
        JMenuItem menuItemReplace = new JMenuItem("Заменить...");
        menuItemReplace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, ActionEvent.CTRL_MASK));
        //menuItemReplace.addActionListener(listener);
        JMenuItem menuItemGoto = new JMenuItem("Перейти...");
        menuItemGoto.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK));
        //menuItemGoto.addActionListener(listener);
        JMenuItem menuItemSelectAll = new JMenuItem("Выделить все");
        menuItemSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
        menuItemSelectAll.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){SelectAllActionPerformed(evt);}});
        JMenuItem menuItemTimeAndDate = new JMenuItem("Время и дата");
        menuItemTimeAndDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
        //menuItemTimeAndDate.addActionListener(listener);
        menuEdit.add(menuItemUndo);
        menuEdit.addSeparator();
        menuEdit.add(menuItemCut);
        menuEdit.add(menuItemCopy);
        menuEdit.add(menuItemPaste);
        menuEdit.add(menuItemDelete);
        menuEdit.addSeparator();
        menuEdit.add(menuItemFind);
        menuEdit.add(menuItemFindNext);
        menuEdit.add(menuItemReplace);
        menuEdit.add(menuItemGoto);
        menuEdit.addSeparator();
        menuEdit.add(menuItemSelectAll);
        menuEdit.add(menuItemTimeAndDate);
        JMenuItem menuItemWrap = new JMenuItem("Перенос по словам");
        //menuItemWrap.addActionListener(listener);
        JMenuItem menuItemFont = new JMenuItem("Шрифт...");
        //menuItemFont.addActionListener(listener);
        menuFormat.add(menuItemWrap);
        menuFormat.add(menuItemFont);
        JMenuItem menuItemView = new JMenuItem("Строка состояния");
        //menuItemView.addActionListener(listener);
        menuView.add(menuItemView);
        JMenuItem menuItemHelp = new JMenuItem("Вызов справки");
        menuItemHelp.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){HelpActionPerformed(evt);}});
        JMenuItem menuItemAbout = new JMenuItem("О программе");
        menuItemAbout.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){AboutActionPerformed(evt);}});
        menuHelp.add(menuItemHelp);
        menuHelp.addSeparator();
        menuHelp.add(menuItemAbout);
        menubar.add(menuFile);
        menubar.add(menuEdit);
        menubar.add(menuFormat);
        menubar.add(menuView);
        menubar.add(menuHelp);
        editor = new JEditorPane();
        MouseListener popuplistener = new PopupListener();
        editor.addMouseListener(popuplistener);
        JScrollPane scrollpane = new JScrollPane(editor);
        scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        notepadFrame.add(scrollpane);
        notepadFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        notepadFrame.setSize(640, 480);
        notepadFrame.setJMenuBar(menubar);
        notepadFrame.setVisible(true);
    }
    private void CreateFileActionPerformed(ActionEvent evt){
        editor.setText("");
    }
    private void OpenFileActionPerformed(ActionEvent evt){
        JFileChooser openfile = new JFileChooser();
        int returnOpenValue = openfile.showOpenDialog(editor);
    }
    private void SaveFileActionPerformed(ActionEvent evt){
        JFileChooser savefile = new JFileChooser();
        int returnSaveValue = savefile.showSaveDialog(editor);
    }
    private void SaveAsFileActionPerformed(ActionEvent evt){
        JFileChooser saveasfile = new JFileChooser();
        int returnSaveAsValue = saveasfile.showSaveDialog(editor);
    }
    private void PrintActionPerformed(ActionEvent evt){
        try {
            editor.print();
        } catch (PrinterException ex) {
            Logger.getLogger(Notepad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    private void ExitActionPerformed(ActionEvent evt){
        if (editor.getText().equals("")) System.exit(0);
    }
    private void CutActionPerformed(ActionEvent evt){
        editor.cut();
    }
    private void CopyActionPerformed(ActionEvent evt){
        editor.copy();
    }
    private void PasteActionPerformed(ActionEvent evt){
        editor.paste();
    }
    private void SelectAllActionPerformed(ActionEvent evt){
        editor.selectAll();
    }
    private void HelpActionPerformed(ActionEvent evt){
        JOptionPane.showMessageDialog (notepadFrame, "Справочная информация", "Справка", JOptionPane.PLAIN_MESSAGE);
    }
    private void AboutActionPerformed(ActionEvent evt){
        JOptionPane.showMessageDialog (notepadFrame, "Notepad aka Notepad by Microsoft", "О программе", JOptionPane.PLAIN_MESSAGE);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){new Notepad();}});
    }
    class PopupListener extends MouseAdapter{
        public void mousePressed(MouseEvent e){
            ShowPopup(e);
        }
        public void mouseReleased(MouseEvent e){
            ShowPopup(e);
        }
        private void ShowPopup(MouseEvent e){
            if (e.isPopupTrigger()){
                popup.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    }
}  

PM MAIL   Вверх
4epT
Дата 21.5.2013, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Привет. То что сразу бросается в глаза:
- Разделяй блоки кода, переводом строк. Например написал в 10 строк какой то функционал, отдели его 2 энтерами от остального кода. Потом легче читать. (это личное мое мнение)
- Не пиши все в одном классе, разделяй на множество классов, иначе говоря используй ООП
PM MAIL   Вверх
leskar
Дата 9.8.2013, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



1. Очень большой конструктор. Для инициалзации  UI я создаю метод initComponents()  и в него кладу весь нужный код. Внутри этого метода можно так же повызывать методы initToolbar() initMenuItem() initMainPane() и т.д. 
2. Вместо ActionListener сделайте кучу классов AbstractAction и сложите их в отдельный пакет. 
3. Если какие-то объекты содержат много логики - то их лучше вынести в отдельный класс. К примеру тот же самый MenuBar.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.