Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

線上繪圖程式

Posted on 2007 年 3 月 14 日2021 年 3 月 12 日 By 日落 在〈線上繪圖程式〉中有 2 則留言

話說現在大家流行用 Ajax 做網頁,什麼東西都可以在線上直接進行編輯,不用儲存到硬碟上。如:Word、Excel 就可以使用 Google Docs 進行編輯。

而 Fauxto 就是一個能讓你在線上作畫的網站。

首頁並不怎麼起眼,第一次使用要先註冊,這樣你就可以直接把你的作品存在網路上不必下載回來。點選「Sign Up」註冊,輸入電子郵件並確認密碼即可。

註冊成功之後,點選「Launch Fauxto」便可以開始享受在線上作畫的樂趣了。

Tags:資訊學習

Flash Webcam 動態捕捉視訊

Posted on 2007 年 3 月 14 日2021 年 3 月 12 日 By 日落 在〈Flash Webcam 動態捕捉視訊〉中尚無留言

這是從 Aleiku 的部落格上面看到的,主要是讓 Flash 去捕捉你 Webcam 所收到的視訊,並且產生不同的反應。

不錯吧?如果你的電腦已經有安裝 Webcam 了,趕快去原作的網站上面玩玩看吧!
http://www.wretch.cc/blog/aleiku&article_id=9841475

Tags:資訊學習

PC3000 修復壞軌…..真的有用嗎?

Posted on 2007 年 3 月 12 日2021 年 3 月 12 日 By 日落 在〈PC3000 修復壞軌…..真的有用嗎?〉中尚無留言

沒錯,真的有用!但是這並不是一個很好解決之道。

「PC3000 俄羅斯硬碟修復術」是透過修改硬碟內的韌體,使的硬碟磁頭不會在經過或是讀寫已經有壞軌的區域。這樣跳過壞軌的區域,固然可以讓硬碟繼續使用。

我們先把問題拉回原點。硬碟是由磁盤和磁頭組成,在一個無塵的的環境中組合並封裝在一個密閉的容器中。硬碟的磁頭原本是貼在磁盤面上,運轉時因為轉速達到每分鐘 7200 轉,使的磁盤周圍的空氣一起流動,而讓磁頭能夠懸浮在氣流上,不與磁盤接觸。

當有壞軌表示硬碟運轉中不小心遭到碰撞,讓磁盤面上的磁感應物刮傷。前面說過硬碟內是一個密閉的空間,所以這些被刮下來的磁感應物當然不會憑空消失,會變成灰塵一樣。

想想看當灰塵在每分鐘 7200 轉的速度下碰到原本完好無缺的磁盤會發生什麼事?就像一隻麻雀不小心撞進空中的飛機引擎一樣。這些灰塵會造成磁盤上其他的磁感應物脫落,讓硬碟內部有更多灰塵;更多的灰塵代表會有更多的磁感應物會被刮下來。這樣的結果只會讓硬碟損壞更嚴重而已。

這裡不是在批評 PC3000 不好,而是想說 PC3000 可以拿來應急,但是你若想保住你硬碟中的資料不會流失,還是盡快去買一個新的硬碟吧!

Tags:資訊學習

擷取 rmvb 的音樂

Posted on 2007 年 3 月 9 日2021 年 3 月 12 日 By 日落 在〈擷取 rmvb 的音樂〉中尚無留言

目前看到比較簡單的方法是用 KMPlayer 擷取功能擷取背景音樂,另外聽說 GoldWave 也可以開啟 rmvb 檔的音軌部分。

先安裝 KMPlayer 吧。

安裝好以後用 KMPlayer 開啟你要擷取音樂的影片,先移動到要開始擷取的時間點按暫停,在畫面任一處點選滑鼠右鍵 -> 擷取 -> 擷取音訊。

跳出子視窗以後,建議把子視窗拉到與 KMPlayer 主視窗不重疊的地方,不然到時候不要怪我操作很麻煩。

從子視窗設定輸出位置和檔案類型後,再把「播放時自動擷取」選項打勾,最後按下「開始」就會開始擷取音樂了。結束直接點選「停止」就可以了。

Tags:資訊學習

在 Java 中讓不同的按鍵有不同的動作

Posted on 2007 年 3 月 8 日2021 年 3 月 12 日 By 日落 在〈在 Java 中讓不同的按鍵有不同的動作〉中尚無留言

通常一個視窗中會有多個不同的按鈕,點下按鈕後,按鈕會分別有不同的動作。

假設我們寫了一個 JTextArea 讓使用者輸入資料,當按下「Add Line」按鈕時會自動換行,按下「Exit」按鈕時會結束程式。

程式碼:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class panel0 {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton b1 = new JButton("Exit");
JButton b2 = new JButton("Add Line");
JTextArea text = new JTextArea(5,10);
JPanel panelControl = new JPanel();



public static void main(String[] arg){
panel0 gui = new panel0();
gui.go();
}

public void go(){

panel.setBackground(Color.gray);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

panelControl.setBackground(Color.gray);
panelControl.setLayout(new BoxLayout(panelControl,BoxLayout.X_AXIS) );

text.setLineWrap(true);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

b1.addActionListener(this);
b2.addActionListener(this);

text.setText("Test string....n");
panel.add(scroller);
panelControl.add(b2);
panelControl.add(b1);

frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.SOUTH,panelControl);

frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e){
if( e.getSource() == b1 )
System.exit(0);
else
text.append("new linen");
}

}

因為 JButton 所呼叫的 ActionListener 都會呼叫 actionPerfomed(),所以只好在此函式內判斷到底是哪個按鈕呼叫的,在依照不同的來源執行不同的動作。

public void actionPerformed(ActionEvent e){
if( e.getSource() == b1 )
System.exit(0);
else
text.append("new linen");
}

但是這樣寫一點會使的整個程式架構混亂,尤其是按鈕需要值型的動作很複雜時,以後要維護程式碼會變的很麻煩,因此要換一個方式來做。

Java 中有個東西叫做 inner class,也就是 class 中的 class。 Inner class 可以存取 outer class 中的變數和函式,但是要注意的是 inner class 是當 outer class 被建立時才會跟著一起被建立,不會單獨存在。

這時要為每個 JButton 建議一個 inner class:

class buttonListenerEXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}

class buttonListenerNewLine implements ActionListener {
public void actionPerformed(ActionEvent e){
text.append("new linen");
}
}

建立好 inner class 之後,要讓 JButton 的 ActionListener 會去呼叫寫好的函式:

b1.addActionListener(new buttonListenerEXIT());
b2.addActionListener(new buttonListenerNewLine());

改好之後,整個程式會變成這樣:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class panel0 {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton b1 = new JButton("Exit");
JButton b2 = new JButton("Add Line");
JTextArea text = new JTextArea(5,10);
JPanel panelControl = new JPanel();



public static void main(String[] arg){
panel0 gui = new panel0();
gui.go();
}

public void go(){

panel.setBackground(Color.gray);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

panelControl.setBackground(Color.gray);
panelControl.setLayout(new BoxLayout(panelControl,BoxLayout.X_AXIS) );

text.setLineWrap(true);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

b1.addActionListener(new buttonListenerEXIT());
b2.addActionListener(new buttonListenerNewLine());

text.setText("Test string....n");
panel.add(scroller);
panelControl.add(b2);
panelControl.add(b1);

frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.SOUTH,panelControl);

frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

class buttonListenerEXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}

class buttonListenerNewLine implements ActionListener {
public void actionPerformed(ActionEvent e){
text.append("new linen");
}
}
}

Tags:Java, 程式設計

文章分頁

上一頁 1 ... 293 294 295 ... 317 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.