0x01 圖形界面的設(shè)計
java有swing包,可以很方便地設(shè)計圖形界面
各種組件可以new出來递惋,然后將其添加進(jìn)container中
每一個組件可以加監(jiān)視器
比如實現(xiàn)的這個:
共3個按鈕屏轰,每點擊一個按鈕就會彈出一個消息
具體實現(xiàn)如下:
package javaStudyDemo.swingDemo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingControlDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public SwingControlDemo(){
prepareGUI();
}
public static void main(String[] args){
SwingControlDemo swingControlDemo = new SwingControlDemo();
swingControlDemo.showEventDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java SWING Examples");
mainFrame.setSize(400,400);
mainFrame.setLayout(new GridLayout(3, 1));
headerLabel = new JLabel("",JLabel.CENTER );
statusLabel = new JLabel("",JLabel.CENTER);
statusLabel.setSize(350,100);
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showEventDemo(){
headerLabel.setText("Control in action: Button");
JButton okButton = new JButton("OK");
JButton submitButton = new JButton("Submit");
JButton cancelButton = new JButton("Cancel");
okButton.setActionCommand("OK");
submitButton.setActionCommand("Submit");
cancelButton.setActionCommand("Cancel");
okButton.addActionListener(new ButtonClickListener());
submitButton.addActionListener(new ButtonClickListener());
cancelButton.addActionListener(new ButtonClickListener());
controlPanel.add(okButton);
controlPanel.add(submitButton);
controlPanel.add(cancelButton);
mainFrame.setVisible(true);
}
private class ButtonClickListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if( command.equals( "OK" )) {
statusLabel.setText("Ok Button clicked.");
}
else if( command.equals( "Submit" ) ) {
statusLabel.setText("Submit Button clicked.");
}
else {
statusLabel.setText("Cancel Button clicked.");
}
}
}
}
0x02 java IO
java IO大體分為字節(jié)流和字符流
InputStreamReader和OutputStreamWriter是轉(zhuǎn)換流,前者將字節(jié)轉(zhuǎn)化為字符,后者將字符轉(zhuǎn)化為字節(jié)(這兩個類其實更多的是起到一個橋梁的作用突梦,進(jìn)行編碼的轉(zhuǎn)換)
BufferedReader和BufferedWriter是字符緩沖區(qū)
BufferedImage圖片的緩沖區(qū)
BufferedImage簡單示例:
先用FileInputStream打開流,
String imgPath = "C://demo.jpg";
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
FileReader和FileWriter讀取文本中的字符羽利,是一個快捷類
字節(jié)流的類都繼承于InputStream和OutputStream
字符流的類都繼承于Reader和Writer
0x03 java 序列化與反序列化
Java 提供了一種對象序列化的機(jī)制宫患,該機(jī)制中,一個對象可以被表示為一個字節(jié)序列这弧,該字節(jié)序列包括該對象的數(shù)據(jù)娃闲、有關(guān)對象的類型的信息和存儲在對象中數(shù)據(jù)的類型虚汛。
將序列化對象寫入文件之后,可以從文件中讀取出來皇帮,并且對它進(jìn)行反序列化卷哩,也就是說,對象的類型信息属拾、對象的數(shù)據(jù)将谊,還有對象中的數(shù)據(jù)類型可以用來在內(nèi)存中新建對象。
整個過程都是 Java 虛擬機(jī)(JVM)獨立的渐白,也就是說尊浓,在一個平臺上序列化的對象可以在另一個完全不同的平臺上反序列化該對象。
怎么理解序列化和反序列化呢
打個比方纯衍,比如A要見B栋齿,但是A和B相隔很遠(yuǎn)無法到達(dá),A只好委托一個人將B的信息(比如身高啦托酸,眼睛啦褒颈,各種相貌特征)傳送過來,然后自己畫出或者想象出B的樣子励堡,這就是一次數(shù)據(jù)傳輸?shù)倪^程谷丸,也就是一次序列化和反序列化的過程。
0x04 java 在線反編譯環(huán)境
經(jīng)常間歇性忘記jar包要怎么反編譯应结,這里有一個在線的反編譯環(huán)境
在線環(huán)境
0x05 java調(diào)用攝像頭
可以直接用GitHub上的一個包
地址
0x06 什么是java包管理工具刨疼?
java包管理工具,主要有Maven和Gradle,之前一直沒有明白java的包管理工具的用處是什么鹅龄,后來親自導(dǎo)入外部的包才意識到揩慕,原來java的包管理工具也就相當(dāng)于python的pip命令了。
0x07 java管理注冊表
有一個已經(jīng)打包好的工具:
JRegistry
0x08 java robot
這個沒有做過多的了解扮休,顧名思義就是一個機(jī)器人迎卤,可以實現(xiàn)自動化的一些操作。
0x09 java OpenCv學(xué)習(xí)
第一個OpenCv的demo
但是當(dāng)用OpenCv去打開攝像頭的時候出錯玷坠,問題還沒解決