Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2020, 17:06   #1
Curiosi
Новичок
Джуниор
 
Регистрация: 17.05.2020
Сообщений: 2
По умолчанию Создание текстового редактора

Здравствуйте, есть два кусочка кода по заданию ниже, и я не знаю как их дописать, кому не сложно помогите пожалуйста

Программа должна уметь работать с текстом, производить базовые операции по
форматированию текста (изменять шрифт и его размер, цвет), сохранять файлы в формате TXT, а
также выводить работу на печать
Также программа должна иметь главное меню и Панель инструментов с базовыми
операциями.


Код:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.swing.JOptionPane;
 
public class PrintIMG 
{
    PrintIMG(final String str)
    {
        PrintService ps = PrintServiceLookup.lookupDefaultPrintService();
        if (ps == null)
        {
            JOptionPane.showMessageDialog(null,
                    "Принтер не обнаружен",
                    "Печать",
                    JOptionPane.PLAIN_MESSAGE);
            return;
        }
        PrinterJob job = PrinterJob.getPrinterJob();
        try
        {
            job.setPrintService(ps);
        }
        catch (PrinterException e1)
        {
            e1.printStackTrace();
        } 
        
        PageFormat pageFormat = job.defaultPage();
        double margin = 36;//12.5
        Paper paper = new Paper();
        paper.setImageableArea(margin, margin, paper.getWidth() - margin * 2, paper.getHeight()- margin * 2);
        pageFormat.setOrientation(PageFormat.LANDSCAPE);//PORTRAIT
        pageFormat.setPaper(paper);
        PageFormat validatePage = job.validatePage(pageFormat);
        
        job.setPrintable(new Printable()
        {
            public int print(Graphics g, PageFormat pf, int pageNumber)throws PrinterException
            {
                if (pageNumber != 0)
                {
                    return Printable.NO_SUCH_PAGE;
                }
                
                BufferedImage img = null;
                try
                {
                    img = ImageIO.read(new File(str));
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
 
                Graphics2D g2 = (Graphics2D) g;
                g.translate((int) (pf.getImageableX()), (int) (pf.getImageableY()));
                double pageWidth = pf.getImageableWidth();
                double pageHeight = pf.getImageableHeight();
                double imageWidth = img.getWidth();
                double imageHeight = img.getHeight();
                double scaleX = pageWidth / imageWidth * 1.04;
                double scaleY = pageHeight / imageHeight * 1.04;
                double scaleFactor = Math.min(scaleX, scaleY);
                AffineTransform at = AffineTransform.getScaleInstance(scaleFactor, scaleFactor);
                g2.drawImage(img, at, null);
                
                return Printable.PAGE_EXISTS;
            }
        }, validatePage);
 
        try
        {
            job.print();
        }
        catch (PrinterException ex)
        {
            //...
        }
    }
}
Код:
private void make_Popup(JTextArea textArea)
    {
        JPopupMenu contextMenu = new JPopupMenu();
        
        Action cut = new DefaultEditorKit.CutAction();
        cut.putValue(AbstractAction.ACCELERATOR_KEY,
                  KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK));
        cut.putValue(Action.NAME, "Вырезать");
        contextMenu.add(cut);
        
        Action copy = new DefaultEditorKit.CopyAction();
        copy.putValue(AbstractAction.ACCELERATOR_KEY,
                  KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK));
        copy.putValue(Action.NAME, "Копировать");
        contextMenu.add(copy);
        
        Action paste = new DefaultEditorKit.PasteAction();
        paste.putValue(AbstractAction.ACCELERATOR_KEY,
                  KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK));
        paste.putValue(Action.NAME, "Вставить");
        contextMenu.add(paste);
        
        Action selectAll = new SelectAll();
        contextMenu.add(selectAll);
        
        textArea.setComponentPopupMenu(contextMenu);
    }
    
    
    static class SelectAll extends TextAction
    {
        private static final long serialVersionUID = 1L;
 
        public SelectAll()
        {
            super("Select All");
            putValue(AbstractAction.ACCELERATOR_KEY,
                  KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK));
            putValue(Action.NAME, "Выделить все");
        }
 
        public void actionPerformed(ActionEvent e)
        {
            JTextComponent component = getFocusedComponent();
            component.selectAll();
            component.requestFocusInWindow();
        }
    }
Curiosi вне форума Ответить с цитированием
Старый 19.05.2020, 11:33   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

это вам во фриланс надо - за денюжку. создать полноценную программу - это ж как мини-проект, а не просто на зачёт. за просто так и с наскока такое никто не сделает. если только уже готовые исходники в сети не найдёте.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линейка текстового редактора ProgDel Общие вопросы Delphi 4 25.10.2010 16:29
Что лудше RichEdit или Memo для текстового редактора EugeneIsmatulin Общие вопросы Delphi 6 30.05.2009 09:14
Написание программы-текстового редактора(Ассемблер) Styks Помощь студентам 1 22.03.2009 14:14
код для текстового редактора Михаил Юрьевич Общие вопросы Delphi 9 08.03.2008 20:11
Нужен Исходник текстового редактора на паскале deadh5n1 Помощь студентам 1 19.12.2007 12:58