之前倒是没有接触过Java。现在来学Java会被一部分人嗤之以鼻。就对现在而言,语言中种类很多,技术层出不穷,各种框架。尤其前端的应用框架越来越多。哪怕我使用jQuery也会被所谓的前端大牛鄙视一把。.
为什么要学Java。语言这玩意的争论没有意义。匠人会把注意力放在工具上么?会也只有不到5%的注意力。
用 Java 写了记事本以及坦克游戏。
代码(记事本):
package javatest;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
public class JavaTest extends JFrame implements ActionListener {
JTextArea jta = null;
JScrollPane scroll = null;
JMenuBar jmb = null;
JMenu jm1 = null;
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
JMenuItem jmi3 = null;
JMenuItem jmi4 = null;
JMenu jm2 = null;
public JavaTest() {
jta = new JTextArea();
// 滚动条 自动出现
scroll = new JScrollPane(jta);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
jmb = new JMenuBar();
jm1 = new JMenu("文件");
jm2 = new JMenu("帮助");
jmi1 = new JMenuItem("打开");
jmi2 = new JMenuItem("保存");
jmi3 = new JMenuItem("退出");
jmi4 = new JMenuItem("关于 (v 1.0)");
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
jmi3.addActionListener(this);
jmi3.setActionCommand("exit");
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
jm2.add(jmi4);
jmb.add(jm1);
jmb.add(jm2);
this.setJMenuBar(jmb);
this.add(scroll);
}
public static void main(String[] args) {
// 设置字体
Font font = new Font("宋体", Font.PLAIN, 12);
String names[] = {"Label", "CheckBox", "PopupMenu", "MenuItem", "CheckBoxMenuItem",
"JRadioButtonMenuItem", "ComboBox", "Button", "Tree", "ScrollPane",
"TabbedPane", "EditorPane", "TitledBorder", "Menu", "TextArea",
"OptionPane", "MenuBar", "ToolBar", "ToggleButton", "ToolTip",
"ProgressBar", "TableHeader", "Panel", "List", "ColorChooser",
"PasswordField", "TextField", "Table", "Label", "Viewport",
"RadioButtonMenuItem", "RadioButton", "DesktopPane", "InternalFrame"
};
for (String item : names) {
UIManager.put(item + ".font", font);
}
JavaTest text = new JavaTest();
text.jshow();
}
@Override
public void actionPerformed(ActionEvent e) {
String filepath;
switch (e.getActionCommand()) {
case "exit":
System.out.println("退出");
System.exit(0);
case "open":
System.out.println("打开文件");
JFileChooser jfco = new JFileChooser();
jfco.setDialogTitle("打开...");
jfco.showOpenDialog(null);
if (jfco.getSelectedFile() == null) {
return;
}
filepath = jfco.getSelectedFile().getAbsoluteFile().getPath();
System.out.println(filepath);
FileReader fr = null;
BufferedReader br = null;
String fileCon = "";
{
try {
fr = new FileReader(filepath);
br = new BufferedReader(fr);
String tmp;
while ((tmp = br.readLine()) != null) {
fileCon += tmp + "\r\n";
}
} catch (FileNotFoundException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
br.close();
} catch (IOException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
}
try {
fr.close();
} catch (IOException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
jta.setText(fileCon);
System.out.println(filepath);
break;
case "save":
System.out.println("另存为");
JFileChooser jfcs = new JFileChooser();
jfcs.setDialogTitle("另存为...");
jfcs.showOpenDialog(null);
if (jfcs.getSelectedFile() == null) {
return;
}
filepath = jfcs.getSelectedFile().getAbsoluteFile().getPath();
FileWriter fw = null;
BufferedWriter bw = null;
{
try {
fw = new FileWriter(filepath);
bw = new BufferedWriter(fw);
bw.write(jta.getText());
} catch (IOException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
bw.close();
} catch (IOException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
}
try {
fw.close();
} catch (IOException ex) {
Logger.getLogger(JavaTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
break;
default:
break;
}
}
public void jshow() {
this.setTitle("记事本");
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
坦克游戏的git地址:https://github.com/uduemc/TankGame
运行如下图: