真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

java在線代碼編輯器 網頁版java在線編譯運行編輯器

java源代碼編輯器 設計用于編寫Java源代碼的編輯器,基本要求:可以完成源程序的文件打開,編輯和文件保存

一. 高亮的內容:

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務至上”的服務理念,堅持“二合一”的優(yōu)良服務模式,真誠服務每家企業(yè),認真做好每個細節(jié),不斷完善自我,成就企業(yè),實現共贏。行業(yè)涉及鑿毛機等,在重慶網站建設公司營銷型網站、WAP手機網站、VI設計、軟件開發(fā)等項目上具有豐富的設計經驗。

需要高亮的內容有:

1. 關鍵字, 如 public, int, true 等.

2. 運算符, 如 +, -, *, /等

3. 數字

4. 高亮字符串, 如 "example of string"

5. 高亮單行注釋

6. 高亮多行注釋

二. 實現高亮的核心方法:

StyledDocument.setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace)

三. 文本編輯器選擇.

Java中提供的多行文本編輯器有: JTextComponent, JTextArea, JTextPane, JEditorPane等, 都可以使用. 但是因為語法著色中文本要使用多種風格的樣式, 所以這些文本編輯器的document要使用StyledDocument.

JTextArea使用的是PlainDocument, 此document不能進行多種格式的著色.

JTextPane, JEditorPane使用的是StyledDocument, 默認就可以使用.

為了實現語法著色, 可以繼承自DefaultStyledDocument, 設置其為這些文本編輯器的documet, 或者也可以直接使用JTextPane, JEditorPane來做. 為了方便, 這里就直接使用JTextPane了.

四. 何時進行著色.

當文本編輯器中有字符被插入或者刪除時, 文本的內容就發(fā)生了變化, 這時檢查, 進行著色.

為了監(jiān)視到文本的內容發(fā)生了變化, 要給document添加一個DocumentListener監(jiān)聽器, 在他的removeUpdate和insertUpdate中進行著色處理.

而changedUpdate方法在文本的屬性例如前景色, 背景色, 字體等風格改變時才會被調用.

@Override

public void changedUpdate(DocumentEvent e) {

}

@Override

public void insertUpdate(DocumentEvent e) {

try {

colouring((StyledDocument) e.getDocument(), e.getOffset(), e.getLength());

} catch (BadLocationException e1) {

e1.printStackTrace();

}

}

@Override

public void removeUpdate(DocumentEvent e) {

try {

// 因為刪除后光標緊接著影響的單詞兩邊, 所以長度就不需要了

colouring((StyledDocument) e.getDocument(), e.getOffset(), 0);

} catch (BadLocationException e1) {

e1.printStackTrace();

}

}

五. 著色范圍:

pos: 指變化前光標的位置.

len: 指變化的字符數.

例如有關鍵字public, int

單詞"publicint", 在"public"和"int"中插入一個空格后變成"public int", 一個單詞變成了兩個, 這時對"public" 和 "int"進行著色.

著色范圍是public中p的位置和int中t的位置加1, 即是pos前面單詞開始的下標和pos+len開始單詞結束的下標. 所以上例中要著色的范圍是"public int".

提供了方法indexOfWordStart來取得pos前單詞開始的下標, 方法indexOfWordEnd來取得pos后單詞結束的下標.

public int indexOfWordStart(Document doc, int pos) throws BadLocationException {

// 從pos開始向前找到第一個非單詞字符.

for (; pos 0 isWordCharacter(doc, pos - 1); --pos);

return pos;

}

public int indexOfWordEnd(Document doc, int pos) throws BadLocationException {

// 從pos開始向前找到第一個非單詞字符.

for (; isWordCharacter(doc, pos); ++pos);

return pos;

}

一個字符是單詞的有效字符: 是字母, 數字, 下劃線.

public boolean isWordCharacter(Document doc, int pos) throws BadLocationException {

char ch = getCharAt(doc, pos); // 取得在文檔中pos位置處的字符

if (Character.isLetter(ch) || Character.isDigit(ch) || ch == '_') { return true; }

return false;

}

所以著色的范圍是[start, end] :

int start = indexOfWordStart(doc, pos);

int end = indexOfWordEnd(doc, pos + len);

六. 關鍵字著色.

從著色范圍的開始下標起進行判斷, 如果是以字母開或者下劃線開頭, 則說明是單詞, 那么先取得這個單詞, 如果這個單詞是關鍵字, 就進行關鍵字著色, 如果不是, 就進行普通的著色. 著色完這個單詞后, 繼續(xù)后面的著色處理. 已經著色過的字符, 就不再進行著色了.

public void colouring(StyledDocument doc, int pos, int len) throws BadLocationException {

// 取得插入或者刪除后影響到的單詞.

// 例如"public"在b后插入一個空格, 就變成了:"pub lic", 這時就有兩個單詞要處理:"pub"和"lic"

// 這時要取得的范圍是pub中p前面的位置和lic中c后面的位置

int start = indexOfWordStart(doc, pos);

int end = indexOfWordEnd(doc, pos + len);

char ch;

while (start end) {

ch = getCharAt(doc, start);

if (Character.isLetter(ch) || ch == '_') {

// 如果是以字母或者下劃線開頭, 說明是單詞

// pos為處理后的最后一個下標

start = colouringWord(doc, start);

} else {

//SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd - pos, normalStyle));

++start;

}

}

}

public int colouringWord(StyledDocument doc, int pos) throws BadLocationException {

int wordEnd = indexOfWordEnd(doc, pos);

String word = doc.getText(pos, wordEnd - pos); // 要進行著色的單詞

if (keywords.contains(word)) {

// 如果是關鍵字, 就進行關鍵字的著色, 否則使用普通的著色.

// 這里有一點要注意, 在insertUpdate和removeUpdate的方法調用的過程中, 不能修改doc的屬性.

// 但我們又要達到能夠修改doc的屬性, 所以把此任務放到這個方法的外面去執(zhí)行.

// 實現這一目的, 可以使用新線程, 但放到swing的事件隊列里去處理更輕便一點.

SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd - pos, keywordStyle));

} else {

SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd - pos, normalStyle));

}

return wordEnd;

}

因為在insertUpdate和removeUpdate方法中不能修改document的屬性, 所以著色的任務放到這兩個方法外面, 所以使用了SwingUtilities.invokeLater來實現.

private class ColouringTask implements Runnable {

private StyledDocument doc;

private Style style;

private int pos;

private int len;

public ColouringTask(StyledDocument doc, int pos, int len, Style style) {

this.doc = doc;

this.pos = pos;

this.len = len;

this.style = style;

}

public void run() {

try {

// 這里就是對字符進行著色

doc.setCharacterAttributes(pos, len, style, true);

} catch (Exception e) {}

}

}

七: 源碼

關鍵字著色的完成代碼如下, 可以直接編譯運行. 對于數字, 運算符, 字符串等的著色處理在以后的教程中會繼續(xù)進行詳解.

import java.awt.Color;

import java.util.HashSet;

import java.util.Set;

import javax.swing.JFrame;

import javax.swing.JTextPane;

import javax.swing.SwingUtilities;

import javax.swing.event.DocumentEvent;

import javax.swing.event.DocumentListener;

import javax.swing.text.BadLocationException;

import javax.swing.text.Document;

import javax.swing.text.Style;

import javax.swing.text.StyleConstants;

import javax.swing.text.StyledDocument;

public class HighlightKeywordsDemo {

public static void main(String[] args) {

JFrame frame = new JFrame();

JTextPane editor = new JTextPane();

editor.getDocument().addDocumentListener(new SyntaxHighlighter(editor));

frame.getContentPane().add(editor);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(500, 500);

frame.setVisible(true);

}

}

/**

* 當文本輸入區(qū)的有字符插入或者刪除時, 進行高亮.

*

* 要進行語法高亮, 文本輸入組件的document要是styled document才行. 所以不要用JTextArea. 可以使用JTextPane.

*

* @author Biao

*

*/

class SyntaxHighlighter implements DocumentListener {

private SetString keywords;

private Style keywordStyle;

private Style normalStyle;

public SyntaxHighlighter(JTextPane editor) {

// 準備著色使用的樣式

keywordStyle = ((StyledDocument) editor.getDocument()).addStyle("Keyword_Style", null);

normalStyle = ((StyledDocument) editor.getDocument()).addStyle("Keyword_Style", null);

StyleConstants.setForeground(keywordStyle, Color.RED);

StyleConstants.setForeground(normalStyle, Color.BLACK);

// 準備關鍵字

keywords = new HashSetString();

keywords.add("public");

keywords.add("protected");

keywords.add("private");

keywords.add("_int9");

keywords.add("float");

keywords.add("double");

}

public void colouring(StyledDocument doc, int pos, int len) throws BadLocationException {

// 取得插入或者刪除后影響到的單詞.

// 例如"public"在b后插入一個空格, 就變成了:"pub lic", 這時就有兩個單詞要處理:"pub"和"lic"

// 這時要取得的范圍是pub中p前面的位置和lic中c后面的位置

int start = indexOfWordStart(doc, pos);

int end = indexOfWordEnd(doc, pos + len);

char ch;

while (start end) {

ch = getCharAt(doc, start);

if (Character.isLetter(ch) || ch == '_') {

// 如果是以字母或者下劃線開頭, 說明是單詞

// pos為處理后的最后一個下標

start = colouringWord(doc, start);

} else {

SwingUtilities.invokeLater(new ColouringTask(doc, start, 1, normalStyle));

++start;

}

}

}

/**

* 對單詞進行著色, 并返回單詞結束的下標.

*

* @param doc

* @param pos

* @return

* @throws BadLocationException

*/

public int colouringWord(StyledDocument doc, int pos) throws BadLocationException {

int wordEnd = indexOfWordEnd(doc, pos);

String word = doc.getText(pos, wordEnd - pos);

if (keywords.contains(word)) {

// 如果是關鍵字, 就進行關鍵字的著色, 否則使用普通的著色.

// 這里有一點要注意, 在insertUpdate和removeUpdate的方法調用的過程中, 不能修改doc的屬性.

// 但我們又要達到能夠修改doc的屬性, 所以把此任務放到這個方法的外面去執(zhí)行.

// 實現這一目的, 可以使用新線程, 但放到swing的事件隊列里去處理更輕便一點.

SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd - pos, keywordStyle));

} else {

SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd - pos, normalStyle));

}

return wordEnd;

}

/**

* 取得在文檔中下標在pos處的字符.

*

* 如果pos為doc.getLength(), 返回的是一個文檔的結束符, 不會拋出異常. 如果pos0, 則會拋出異常.

* 所以pos的有效值是[0, doc.getLength()]

*

* @param doc

* @param pos

* @return

* @throws BadLocationException

*/

public char getCharAt(Document doc, int pos) throws BadLocationException {

return doc.getText(pos, 1).charAt(0);

}

/**

* 取得下標為pos時, 它所在的單詞開始的下標. ?±wor^d?± (^表示pos, ?±表示開始或結束的下標)

*

* @param doc

* @param pos

* @return

* @throws BadLocationException

*/

public int indexOfWordStart(Document doc, int pos) throws BadLocationException {

// 從pos開始向前找到第一個非單詞字符.

for (; pos 0 isWordCharacter(doc, pos - 1); --pos);

return pos;

}

/**

* 取得下標為pos時, 它所在的單詞結束的下標. ?±wor^d?± (^表示pos, ?±表示開始或結束的下標)

*

* @param doc

* @param pos

* @return

* @throws BadLocationException

*/

public int indexOfWordEnd(Document doc, int pos) throws BadLocationException {

// 從pos開始向前找到第一個非單詞字符.

for (; isWordCharacter(doc, pos); ++pos);

return pos;

}

/**

* 如果一個字符是字母, 數字, 下劃線, 則返回true.

*

* @param doc

* @param pos

* @return

* @throws BadLocationException

*/

public boolean isWordCharacter(Document doc, int pos) throws BadLocationException {

char ch = getCharAt(doc, pos);

if (Character.isLetter(ch) || Character.isDigit(ch) || ch == '_') { return true; }

return false;

}

@Override

public void changedUpdate(DocumentEvent e) {

}

@Override

public void insertUpdate(DocumentEvent e) {

try {

colouring((StyledDocument) e.getDocument(), e.getOffset(), e.getLength());

} catch (BadLocationException e1) {

e1.printStackTrace();

}

}

@Override

public void removeUpdate(DocumentEvent e) {

try {

// 因為刪除后光標緊接著影響的單詞兩邊, 所以長度就不需要了

colouring((StyledDocument) e.getDocument(), e.getOffset(), 0);

} catch (BadLocationException e1) {

e1.printStackTrace();

}

}

/**

* 完成著色任務

*

* @author Biao

*

*/

private class ColouringTask implements Runnable {

private StyledDocument doc;

private Style style;

private int pos;

private int len;

public ColouringTask(StyledDocument doc, int pos, int len, Style style) {

this.doc = doc;

this.pos = pos;

this.len = len;

this.style = style;

}

public void run() {

try {

// 這里就是對字符進行著色

doc.setCharacterAttributes(pos, len, style, true);

} catch (Exception e) {}

}

}

}

北大青鳥java培訓:Java編程工具有哪些比較好用?

一、EditplusEditPlus是功能很全面的文本、HTML、程序源代碼編輯器。

默認的支持HTML、ASP、Perl、C/C++、CSS、PHP、Java、java和VB的語法著色。

通過定制語法文件還可以擴展到其他程序語言。

可以在Tools菜單的ConfigureUserTools菜單項配置用戶工具,類似于UltraEdit的配置,配置好Java的編譯器Javac和解釋器Java后,通過EditPlus的菜單可以直接編譯執(zhí)行Java程序。

二、UltraEdit初學者一般用什么開發(fā)工具?UltraEdit是一個功能強大的文本、HTML、程序源代碼編輯器。

作為源代碼編輯器,它的默認配置可以對C/C++,VB,HTML,Java和Perl進行語法著色。

用它設計Java程序時,可以對Java的關鍵詞進行識別并著色,方便了Java程序設計。

它具有完備的復制、粘貼、剪切、查找、替換、格式控制等編輯功能。

可以在Advanced菜單的ToolConfiguration菜單項配置好Java的編譯器Javac和解釋器Java,直接編譯運行Java程序。

三、Eclipse初學者一般用什么開發(fā)工具?Eclipse是一個開放可擴展的集成開發(fā)環(huán)境(IDE)。

它不僅可以用于Java的開發(fā),通過開發(fā)插件,它可以構建其他的開發(fā)工具。

Eclipse是開放源代碼的項目,并可以免費下載。

建議使用Releases或StableBuilds版本。

四、JcreatorJcreator是一個用于Java程序設計的集成開發(fā)環(huán)境,具有編輯、調試、運行Java程序的功能。

這個軟件比較小巧,對硬件要求不是很高,完全用C++寫的,速度快、效率高。

java課程認為具有語法著色、代碼參數提示、工程向導、代碼自動完成、類向導等功能。

先進次啟動時提示設置JavaJDK主目錄及JDKJavaDoc目錄,軟件自動設置好類路徑、編譯器及解釋器路徑,還可以在幫助菜單中使用JDKHelp。

但目前這個版本對中文支持性不好。

自己是學java的,現在想寫前端代碼的話用哪個軟件比較好?

1、Sublime Text

Sublime Text是一個代碼編輯器也是HTML和散文先進的文本編輯器。漂亮的用戶界面和非凡的功能,例如迷你地圖,多選擇,Python的插件,代碼段,等等。完全可自定義鍵綁定,菜單和工具欄。Sublime Text的主要功能包括:拼寫檢查,書簽,完整的Python API,Goto功能,即時項目切換,多選擇,多窗口等等。

2、Dreamweaver

Adobe Dreamweaver使用所見即所得的接口,亦有HTML(標準通用標記語言下的一個應用)編輯的功能,借助經過簡化的智能編碼引擎,輕松地創(chuàng)建、編碼和管理動態(tài)網站。 訪問代碼提示,即可快速了解 HTML、CSS 和其他Web標準。使用視覺輔助功能減少錯誤并提高網站開發(fā)速度。

3、Visual Studio Code

Visual Studio Code中文版是微軟推出的帶 GUI 的代碼編輯器,軟件功能非常強大,界面簡潔明晰、操作方便快捷,設計得很人性化。軟件主要改進了文檔視圖,完善了對 Markdown的支持,新增PHP語法高亮。

4、HBuilder

HBuilder是專為前端打造的開發(fā)工具,具有飛一樣的編碼、最全的語法庫和瀏覽器兼容數據、可以方便的制作手機APP、最保護眼睛的綠柔設計等特點。支持HTML、CSS、JS、PHP的快速開發(fā)。從開放注冊以來深受廣大前端朋友們的喜愛。

5、WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 開發(fā)工具。目前已經被廣大中國JS開發(fā)者譽為“Web前端開發(fā)神器”、“最強大的HTML5編輯器”、“最智能的JavaScript IDE”等。與IntelliJ IDEA同源,繼承了IntelliJ IDEA強大的JS部分的功能。

用來編寫JAVA程序的應用軟件有哪些?

1、Eclipse - IBM甩出來給開源社區(qū)的IDE,其本身就是使用Java開發(fā)的。\x0d\x0a2、MyEclipse - 把Eclipse包裝了一下,加了J2EE企業(yè)開發(fā)的許多功能強大的插件。\x0d\x0a3、NetBeans - SUN公司自己開發(fā)的Java開發(fā)環(huán)境,功能挺多的。\x0d\x0a4、還有一些超喜歡手工編寫Java代碼的牛人喜歡使用帶語法著色功能的純文本編輯器編寫Java程序,代碼寫完后在命令提示符下編譯運行。這種方式只適用寫少量代碼或作為學習使用,開發(fā)大型項目不適用,因為效率很低。

程序猿專用十大在線編譯器(IDE)整理

1. CodeSandbox(基于 React 的在線代碼沙盒平臺) 我常用的

① 主流的腳手架都支持,比如在線create-react-app,vue-cli等(在線 fork 修改),支持 github 登錄(項目導入),也支持 cli 上傳例子,例子可以在線訪問和下載,當然也支持內嵌到其他博客等網頁中。

② 地址:

③ 圖示

2. CodePen(前端代碼編輯運行的網站)

① CodePen 是一個完全免費的前端代碼托管服務,主要功能有:

② 地址:

③ 圖示

3. JSRUN(支持手機端的在線JS編輯器)

① jsrun是一款支持手機端的在線JS編輯器, HTML/CSS/Javascript在線代碼運行工具,js代碼在線測試調試,是runjs的升級版支持vue.js/angular.js的在線編輯器

② 地址:

③ 圖示

4. jsFiddle(前端代碼編輯運行的網站)

① jsFiddle 是一個Web開發(fā)人員的練習場,可在線編輯和測試 HTML、CSS、JavaScript代碼片段。在 jsFiddle 編輯的代碼,可以保存,也可分享給其他人,還可嵌入到其他網頁

② 地址:

③ 圖示

5. Ideone(C和C++的在線編譯和調試工具,支持其他的60種語言) 我常用

① Ideone是C和C++的在線編譯和調試工具,支持其他的60種語言。這個工具提供許多強大的功能,允許程序員快速高效的編譯源代碼

② 地址:

③ 圖示

6. Codechef(C,C ++和Java的在線編譯工具)

① 它支持C,C ++和Java,非常接近真正的桌面IDE。這是超快速和易于使用。適合于課堂和作業(yè)的學生,練習面試問題。

② 地址:

③ 圖示

7. JDoodle (C,C ++和Java的在線IDE)

① 支持協作代碼。它只是從一個簡單的文本區(qū)域開始,您可以粘貼代碼,然后單擊運行。您可以更改命令行參數并在運行該程序之前設置stdin。最適合新的在線編輯器不支持的許多舊語言。

② 地址:

③ 圖示

8. OnlineGDB (在線C,C ++,Java,PHP編譯器) 我常用

① 它支持C,C ++,PHP和Java編譯器。OnlineGDB的獨特功能是,您可以逐步調試您的代碼。一旦代碼被寫入,它可以很容易地格式化,使其看起來不錯。

② 地址:

③ 圖示

9. GCC資源管理器

① GCC編譯器資源管理器是一個交互式在線編譯器,它顯示編譯后的C++、RISE、GO(以及更多)代碼的匯編輸出。

② 地址:

③ 圖示

10. plnkr edit在線編輯器

① js的在線編輯器。

② 地址:

③ 圖示


分享文章:java在線代碼編輯器 網頁版java在線編譯運行編輯器
文章出自:http://weahome.cn/article/hehgjo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部