Skip to content

Zeroplex 生活隨筆

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

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

擷取 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, 程式設計

Grow RPG 破關!

Posted on 2007 年 3 月 7 日2021 年 3 月 12 日 By 日落 在〈Grow RPG 破關!〉中尚無留言

終於………終於被我找到順序啦!

  1. 伐木小屋
  2. 樹木
  3. 城堡
  4. 水
  5. 鐵塔
  6. 石頭
  7. 百寶箱
  8. 階梯

以這樣的順序,可以讓每個物件都升到最高等級,你就可以打敗會後的大魔王了!好好享受一下破關畫面吧!

Tags:分享

Find domain name for IP address

Posted on 2007 年 3 月 6 日2021 年 3 月 12 日 By 日落 在〈Find domain name for IP address〉中尚無留言

台大計算機中心提供一個能由 IP 搜尋出網域名稱的服務。

http://checkdns.cc.ntu.edu.tw/index.php

例如輸入:140.134.27.100
就會找到:bbs.iecs.fcu.edu.tw

Tags:分享

笑評當今世界四大防毒軟體

Posted on 2007 年 3 月 5 日2021 年 3 月 12 日 By 日落 在〈笑評當今世界四大防毒軟體〉中有 4 則留言

轉貼 from 我的 mail

卡巴就好像西毒,兇猛強悍,神功蓋世,對敵決不留情,出手狠辣,招招奪命,絕少失手,不愧為一代梟雄,但畢竟練的不是純正內功,容易走火入魔,導致系統出問題。

麥咖啡就像東邪,玉樹臨風,俊朗瀟灑,對敵招式繁多,機關重重,殺伐決斷從不遲疑,為江湖第一機智聰明之人,但因其心機太深,令人難以掌握。

諾頓就像南帝,雍容華貴,穩沉厚重,胸懷博大,練的是純正內功,靠的是教化感人,對敵有慈悲心腸,一般採取隔離教化,使其不在作惡,很少殺人,稱的上是一代宗師,但因其過於敦厚,不僅自己活的累,別人也為他感到累。

Nod32就想北丐,來無影去無蹤,瀟瀟灑灑,笑傲江湖,對敵用的是逍遙游和打狗棍法,江湖上少有對手,但因其過於輕浮,難免誤事。

推:卡巴兇猛強悍,但畢竟練的不是純正內功,容易走火入魔,導致系統出問題。

Kaspersky 雖然掃毒能力強,但是掃毒率高代表誤判機率也很高,把很多「可能」有問題的檔案都當作病毒刪除了。

不管是什麼防毒軟體,都不可能有百分之百能抓到病毒的,所以不要亂抓東西、不要亂逛奇怪的網站,才是真正防止中毒的根本之道!

Tags:分享

文章分頁

上一頁 1 ... 294 295 296 ... 318 下一頁

其他

關於我  (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 國際 授權條款授權.