创建一个简单的表单应用程序来编辑文本文件

时间:2010-07-31 08:32:47

标签: java macos pyqt

我想我需要重申我的问题......

我想创建一个SIMPLE表单应用程序,用于编辑一个非常特定的文本文件的某些区域。虽然我有一些Web开发经验,但我不想创建基于浏览器的应用程序。基本上我想尝试一个桌面应用程序,我正在寻找一些帮助,以便开始包括选择语言的建议。该应用程序应该在Mac OS X上运行。除了没有限制:Java,Cocoa,Python,甚至一些交互式shell脚本都可以。

如果您对这些细节感兴趣,请继续阅读此处,但不是我的问题不是特定于LaTex ......: 我有一个自动生成的报告文件,其中包含LaTex代码。现在我想构建一个小应用程序,为每个部分和它的标题创建一个表单字段。该文档只包含几百行,应该如下工作:

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

标题/ normalsize对在文档中出现5-6次。我想要的只是一个小GUI,允许用户在花括号之间进行编辑,而不会看到任何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 个答案:

答案 0 :(得分:1)

TeX on Mac OS X wiki建议jEdit,它支持pluginsLaTeXTools可能是一个好的开始。

附录:

  

我不想重新发明轮子   我想做的就是创建一个表单应用程序。

虽然这些目标有些矛盾,但您始终可以解析文件并为每个可编辑部分使用合适的JTextComponent。以下是Using Text Components的概述;如果您要创建自己的编辑器工具包,请参阅Text Component Features,如Customizing a Text Editor中所述。

附录:除教程外,您可以查看此text field layout example。另外,请考虑使用两列JTable,这样您就可以将文档模型与表单视图完全分开。

附录:关于你的代码的一些注释。

  1. 班级名称通常是大写的,例如BasicFrame

  2. 如果你没有改变它的行为,不要扩展JFrame; JPanel是其他组件的良好容器,可以JFrame显示。

  3. 始终在EDT

  4. 上建立您的GUI
  5. 让您查看并模拟separate