2010-07-31 101 views
1

我想我需要重申我的問題...創建一個簡單的表單應用程序來編輯一個文本

我想創建一個編輯非常具體的文本文件中的特定區域的簡單形式的應用。雖然我有一些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} 

標頭/標準尺寸對在文檔中出現5-6次。我只需要一個小GUI,允許用戶在大括號之間進行編輯,而無需查看任何TeX代碼。我知道LyX和其他所見即所得的LaTeX方法 - 我不想重新發明輪子。我只想保護自動生成的代碼,使其免受用戶的傷害,讓它們更舒適一些。編輯: 這是我第一次嘗試。我想我應該使用PlainDocument而不是直接發送它,但是我會弄清楚,因爲我通過編輯器/文本組件鏈接從垃圾內容中獲得了大量幫助。主要問題是從\ 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); 

    } 
} 

對於任何建議提前Thx!

+1

其實php腳本可以從命令行運行,你只需要安裝解釋器,而不是一個web服務器 – 2010-07-31 08:38:15

+0

不知道,只知道它的蟒蛇。雖然它不會幫助我的情況。如果我不相信用戶讓他編輯一個.tex文件,我不希望他安裝一些翻譯器......無論如何,我已經學會了一些東西:) – 2010-07-31 09:26:58

+0

重新格式化的代碼;如果不正確請回復。 – trashgod 2010-08-02 15:46:26

回答

1

TeX on Mac OS X維基推薦jEdit,它支持pluginsLaTeXTools可能是一個好的開始。

附錄:

我不想推倒重來。
我想要做的就是創建一個表單應用程序。

儘管這些目標有些矛盾,但您始終可以解析該文件併爲每個可編輯部分使用合適的JTextComponent。這裏是Using Text Components的概述;如果您想創建自己的編輯器工具包,請參閱Text Component Features,如Customizing a Text Editor中所述。

附錄:除了本教程,您可能會看到這個text field layout example。另外,考慮一個兩列JTable,這將允許您乾淨地將您的文檔模型與表單視圖分開。

附錄:關於您的代碼的一些說明。

  1. 類名通常是大寫的,例如, BasicFrame。如果你不改變它的行爲,請不要延伸JFrame; JPanel是其他組件的良好容器,它可以顯示在JFrame中。

  2. 始終將您的GUI構建在EDT上。

  3. 讓你查看和模型separate

+0

Thx爲有趣的鏈接,但我正在尋找一個開始建立我自己的「編輯器」。呃,不是編輯。我想要做的就是創建一個表單應用程序。 – 2010-07-31 13:51:10

+0

@ ran2:我已經詳細闡述過了。 – trashgod 2010-07-31 14:39:50

+0

thx!精心製作的版本確實有所幫助。我會通過它。 Java似乎也是一個不錯的選擇。 – 2010-08-01 15:02:45

相關問題