欧美亚洲综合图区在线|天天射天天干国产成卜|99久久免费国产精精品|国产的欧美一区二区三区|日韩中文字幕无码不卡专区|亚麻成人aV极品一区二区|国产成人AV区一区二区三|成人免费一区二区三区视频网站

當前位置:首頁 > 軟件開放 > 正文內(nèi)容

源碼編輯器教程視頻建黨一百周年(建黨100周年視頻腳本)

軟件開放2年前 (2023-01-10)2331

今天給各位分享源碼編輯器教程視頻建黨一百周年的知識,其中也會對建黨100周年視頻腳本進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

本文目錄一覽:

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

一. 高亮的內(nèi)容:

需要高亮的內(nèi)容有:

1. 關(guān)鍵字, 如 public, int, true 等.

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

3. 數(shù)字

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

5. 高亮單行注釋

6. 高亮多行注釋

二. 實現(xiàn)高亮的核心方法:

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

三. 文本編輯器選擇.

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

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

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

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

四. 何時進行著色.

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

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

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

@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: 指變化的字符數(shù).

例如有關(guān)鍵字public, int

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

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

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

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;

}

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

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);

六. 關(guān)鍵字著色.

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

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)) {

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

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

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

// 實現(xiàn)這一目的, 可以使用新線程, 但放到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的屬性, 所以著色的任務(wù)放到這兩個方法外面, 所以使用了SwingUtilities.invokeLater來實現(xiàn).

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) {}

}

}

七: 源碼

關(guān)鍵字著色的完成代碼如下, 可以直接編譯運行. 對于數(shù)字, 運算符, 字符串等的著色處理在以后的教程中會繼續(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);

}

}

/**

* 當文本輸入?yún)^(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);

// 準備關(guān)鍵字

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;

}

}

}

/**

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

*

* @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)) {

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

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

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

// 實現(xiàn)這一目的, 可以使用新線程, 但放到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(), 返回的是一個文檔的結(jié)束符, 不會拋出異常. 如果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, ?±表示開始或結(jié)束的下標)

*

* @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時, 它所在的單詞結(jié)束的下標. ?±wor^d?± (^表示pos, ?±表示開始或結(jié)束的下標)

*

* @param doc

* @param pos

* @return

* @throws BadLocationException

*/

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

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

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

return pos;

}

/**

* 如果一個字符是字母, 數(shù)字, 下劃線, 則返回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();

}

}

/**

* 完成著色任務(wù)

*

* @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) {}

}

}

}

有哪些好用的代碼編輯器值得推薦?

給大家推薦8款最受程序員喜愛的代碼編輯器

1、Atom

Atom是Github打造的一款開源代碼編輯器,支持 macOS、Windows和Linux操作系統(tǒng),支持Node.js所寫的插件,并內(nèi)置由Github提供的Git版本控制系統(tǒng),也可被當作 IDE 使用。

Atom的特色在于它極其豐富的可定制性,以及賞心悅目的界面。特別是自帶的代碼縮略圖和代碼折疊功能,不管是用Python還是做前端都非常好用。

2、EMACS

EMACS的強大之處在于已經(jīng)超出了編輯器的范疇,搞成了大的平臺,很多開發(fā)人員在上面直接都以他為入口完成各種功能需求了。

主要有如下特性:上網(wǎng)瀏覽網(wǎng)頁看視頻,收發(fā)郵件,調(diào)試程序,玩游戲,計算器,;、文件比較,記日記,目錄管理

3、Notepad++

Notepad++被稱為是JAVA程序員的最愛,幾乎可以替代記事本的最佳編輯器,很多強大的功能集于一身??梢栽赪indows操作系統(tǒng)下編輯,有完整的中文化接口支持多國語言編寫的功能(UTF8技術(shù)),支持自定義語言。該程序還支持自動完成某些編程語言的API子集。

4、Sublime Text

Sublime 是一種比Notepad++功能強大的多編輯器,現(xiàn)在很多前端開發(fā)人員都很喜歡,雖然代碼不開源,里面需要拿到注冊碼才能使用,但是它幾乎涵蓋了notepad++的所有特性,界面美觀功能全的編輯器。

主要有如下特性:

跨平臺,幾乎在各個操作系統(tǒng)上都能使用

查找和替換功能做得非常友善

不僅支持多種語言關(guān)鍵字的高亮提示,還能針對編程語言編譯錯誤給提示

支持插件功能

能夠支持多種布局方式

5、Brackets

Brackets是一款為Linux開發(fā)者設(shè)計的開源代碼編輯器,使用Brackets寫代碼,你不會被任何事情所打斷。比如在寫HTML代碼時,即便你沒有保存代碼也可以及時預覽你的Web頁面效果。你也可以使用Theseus來檢查變量,Brackets默認提供一種主題,當然你也可以在擴展中心獲取更多的主題。

6、Vim

Vim 是一款高度可定制的文本編輯器,可以用于包括編寫代碼在內(nèi)的各種文本創(chuàng)建與編輯工作。

Vim 的特色在于,它可以僅僅通過鍵盤來在插入、執(zhí)行命令、文本批量處理等模式之中切換。這就使得 Vim 可以不用進行菜單或者鼠標操作,并且最小化組合鍵的操作。對文字錄入員或者程序員可以大大增強速度和效率。

7、Visual Studio Code

Visual Studio Code是目前最受歡迎的代碼編輯器。Visual Studio Code是一個由微軟公司發(fā)布的免費開源且跨平臺的代碼編輯器,剛一問世,它就以強大的功能、美觀的界面、高度的可定制性,被譽為微軟的良心之作。

Visual StudioCode 內(nèi)置了代碼調(diào)試、Git 版本控制、代碼高亮、智能代碼補完、代碼片段管理、代碼重構(gòu)等豐富的功能。此外,VS Code 的用戶個性配置選項也很豐富,能方便地修改主題顏色、鍵盤快捷方式等各種屬性和參數(shù),還在內(nèi)置了擴展程序管理的功能。

8、Eclipse

Eclipse以一種友好的集成開發(fā)環(huán)境,為各種類型的用戶,提供了一系列針對開發(fā)Web和Java應(yīng)用的可用工具。雖然專注于Java,但是也支持其他各種編程語言,如C ++、JavaScript、PHP、C、Perl、Fortran、Ruby、Python,甚至是COBOL。它還包括了適用于各種語言、向?qū)Ш蛢?nèi)置應(yīng)用程序以簡化開發(fā)的源代碼和圖形編輯器,以及支持部署、運行和測試app的工具和API。

Eclipse提供的插件功能相當豐富,有助于更加簡便地創(chuàng)建、集成和使用軟件工具,節(jié)省時間和金錢。

源碼編輯器如何使用變量來進行積分

先設(shè)置一個變量 積分

積木如下:

當(觸發(fā)某個條件)

使變量 積分 增加 (數(shù)字)

如何在源碼編輯器中設(shè)置聲音與文字同步

選擇音頻,然后選擇【踩點】,根據(jù)音頻的內(nèi)容進行踩點標記。完成踩點之后,我們就可以進行文字編輯了,在【文字】里面打入視頻內(nèi)容,然后讓每一個短句的內(nèi)容和視頻踩點處對齊,即可完成音頻同步了。

在電腦端有另外的操作方法,我們只需要將音頻文字使用網(wǎng)上的轉(zhuǎn)換軟件,將音頻轉(zhuǎn)成文字,然后將文字文件導入到字幕模板中,將音頻和文字模板拉齊即可完成。特效/動畫的添加方式也是一樣。在這里需要強調(diào)一下的是音頻導成文字的過程中,其實是會有很多匹配不正確的內(nèi)容,還是需要在導出后大家一一檢查,然后再制作。

一般來說最簡單的字幕用白色字體就可以,然后根據(jù)音頻的風格進行字體的挑戰(zhàn),如古風就比較適合一些毛筆字體。完成上面的音頻字幕同步操作之后,我們點擊文字,選擇【動畫】,最后一步將視頻導出即可完成編輯。

源碼編輯器教程視頻建黨一百周年的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于建黨100周年視頻腳本、源碼編輯器教程視頻建黨一百周年的信息別忘了在本站進行查找喔。

掃描二維碼推送至手機訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://m.landcheck.net/post/3308.html

“源碼編輯器教程視頻建黨一百周年(建黨100周年視頻腳本)” 的相關(guān)文章

app軟件開發(fā)(app開發(fā)培訓)

app軟件開發(fā)(app開發(fā)培訓)

本篇文章給大家談?wù)刟pp軟件開發(fā),以及app開發(fā)培訓對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、怎么開發(fā)app軟件? 2、app是如何制作的,APP如何開發(fā)? 3、app軟件開發(fā)怎么選擇 4、開發(fā)app需要什么技術(shù) 5、如何開發(fā)一款app軟件 6、...

sony相機官方售后電話(sony相機客服電話)

sony相機官方售后電話(sony相機客服電話)

今天給各位分享sony相機官方售后電話的知識,其中也會對sony相機客服電話進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、索尼相機合肥售后服務(wù)在哪里 2、哈爾濱的索尼相機售后服務(wù)在哪 3、襄陽SONY相機的售后服務(wù)電話是多少?地址在哪? 索尼相機...

autojs源碼(autojs源碼提取器)

autojs源碼(autojs源碼提取器)

今天給各位分享autojs源碼的知識,其中也會對autojs源碼提取器進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、手機autojs 怎樣host跳過活著屏蔽廣告源碼 2、大量autojs常用代碼介紹以及示例 3、Autojs微信自動操作免root...

春節(jié)祝福代碼怎樣制作(元宵祝福代碼)

春節(jié)祝福代碼怎樣制作(元宵祝福代碼)

本篇文章給大家談?wù)劥汗?jié)祝福代碼怎樣制作,以及元宵祝福代碼對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、父親節(jié)祝福代碼 2、如何編寫新春祝福 3、我是一個小孩,老師說要自編兩則春節(jié)祝福短信。請問春節(jié)祝福短信該怎樣編?順便給個例子,要自己編。 4、父親節(jié)微信祝福...

用Python設(shè)計小游戲(python設(shè)計小游戲誰先走到17誰就贏)

用Python設(shè)計小游戲(python設(shè)計小游戲誰先走到17誰就贏)

本篇文章給大家談?wù)動肞ython設(shè)計小游戲,以及python設(shè)計小游戲誰先走到17誰就贏對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、Python實現(xiàn)消消樂小游戲 2、用Python寫一個簡單的小游戲 3、python簡單小游戲代碼 怎么用Python制作簡單小...

中臺架構(gòu)與實現(xiàn)(中臺架構(gòu)與實現(xiàn)基于DDD和微服務(wù))

中臺架構(gòu)與實現(xiàn)(中臺架構(gòu)與實現(xiàn)基于DDD和微服務(wù))

今天給各位分享中臺架構(gòu)與實現(xiàn)的知識,其中也會對中臺架構(gòu)與實現(xiàn)基于DDD和微服務(wù)進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、中臺是什么意思 2、數(shù)據(jù)中臺有什么好處? 3、業(yè)務(wù)中臺和數(shù)據(jù)中臺有什么關(guān)系? 4、百勝軟件E3全渠道中臺采用的什么底層架...