Создать простую форму приложения для редактирования текстового файла - PullRequest
1 голос
/ 31 июля 2010

Я думаю, мне нужно переформулировать мой вопрос ...

Я хочу создать ПРОСТОЕ приложение формы, которое редактирует определенные области одного очень специфического текстового файла.Хотя у меня есть некоторый опыт веб-разработки, я не хочу создавать браузерное приложение.По сути, я хочу попробовать приложение для настольных компьютеров и ищу некоторую помощь для начала, включая предложения по выбору языка.Приложение должно работать на Mac OS X. Кроме того, нет никаких ограничений: Java, Cocoa, Python, даже какой-нибудь интерактивный сценарий оболочки будет в порядке.

Если вас интересуют подробности, продолжайте читать здесь, но не о том, что мой вопрос не относится к LaTex ...: У меня есть автоматически сгенерированный файл отчета, который содержит код LaTex.Теперь я хочу создать небольшое приложение, которое создает поле формы для каждого раздела и его заголовка.Документ содержит всего несколько сотен строк, и он должен работать следующим образом:

\section{ This is were the header text should go inside the document  }
\normalsize{ This is where the normal text should go}

Пары заголовок / обычный размер встречаются в документе 5-6 раз.Все, что я хочу, это небольшой графический интерфейс, который позволяет пользователю редактировать фигурные скобки, не видя код TeX.Я знаю, что есть LyX и другие WYSIWYG подходы к LaTeX - я не хочу изобретать велосипед.Я просто хочу защитить автоматически сгенерированный код от пользователей и сделать его немного более удобным для них.

РЕДАКТИРОВАТЬ: вот моя самая первая попытка.Я предполагаю, что мне следует использовать PlainDocument вместо прямой отправки, но я это выясню, так как я получил много помощи от trashgod со ссылками на редактор / текстовые компоненты.Основная проблема заключается в выделении содержимого из материалов \ section {} и \ normalsize {}.Возможно, я приведу здесь несколько регулярных выражений.Мне нужно получить новую текстовую область для каждого появления.

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileReader;

import javax.swing.*;

public class basicFrame extends JFrame {
// Declare Variables

    JScrollPane bildlauf = new JScrollPane();
    JTextArea txtfeld = new JTextArea();

    public basicFrame() {
        super();


        // Main window
        setTitle("ReportEditor");
        setBackground(Color.LIGHT_GRAY);

        // components 
        try {
            File datei = new File("report.Rnw");
            FileReader in = new FileReader(datei);
            txtfeld.read(in, datei);
            in.close();

        } catch (Exception e) {
            System.out.println("Error !");
        }

        // setLayout(new GridLayout(2,2));

        // Scroll Shizzle
        bildlauf.getViewport().add(txtfeld, null);
        getContentPane().add(bildlauf, BorderLayout.CENTER);

        //txtfeld.setSize(500,680);
        //add(txtfeld);
        //this.getContentPane().add(txtfeld);

        // close
        addWindowListener(new WindowLauscher());
    }

    // event handlers... 
    protected static final class WindowLauscher extends WindowAdapter {

        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }

    public static void main(String[] args) {
        //Fesnter erzeugen und anzeigen, die main Sache halt
        basicFrame hf = new basicFrame();
        hf.setSize(500, 700);
        hf.setLocation(100, 100);
        hf.setVisible(true);

    }
}

Заранее спасибо за любые предложения!

1 Ответ

1 голос
/ 31 июля 2010

Вики TeX на Mac OS X рекомендует jEdit , который поддерживает плагины . LaTeXTools может быть хорошим началом.

Добавление:

Я не хочу изобретать велосипед.
Все, что я хочу сделать, это создать приложение формы.

Хотя эти цели несколько противоречивы, вы всегда можете проанализировать файл и использовать подходящий JTextComponent для каждого редактируемого раздела. Вот обзор Использование текстовых компонентов ; см. Функции текстовых компонентов , если вы хотите создать свой собственный набор редактора, как описано в Настройка текстового редактора .

Приложение: Помимо учебного пособия, вы можете посмотреть на этот пример макета текстового поля . Кроме того, рассмотрим две колонки JTable, которые позволят вам четко отделить модель документа от представления формы.

Приложение: несколько примечаний к вашему коду.

  1. Имена классов обычно пишутся с большой буквы, например BasicFrame.

  2. Не расширяйте JFrame, если вы не меняете его поведение; JPanel является хорошим контейнером для других компонентов, и его можно отобразить в виде JFrame.

  3. Всегда создавайте свой графический интерфейс на EDT .

  4. Держите ваш взгляд и модель отдельно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...