3,13Java基础知识:GUI全部

GUI 图形用户界面

JavaGUI的容器
首层容器:JWindow JFrame(默认BorderLayout) JDialog
中间容器:JPanel(默认FLowlayout)

内容面板:Container

AWT:使用操作系统本身,跨平台时效果不一样
Swing:效果一样,跨平台

Swing 程序建立步骤:
①建立容器
②建立组件
③组件添加到容器
④设置布局
⑤添加事件

Swing 容器
JApplet 浏览器中运行的容器
JFrame 顶层容器,不能包含在其他容器中
JPanel 举行区域,页面
JScrollPane
JDialog

布局管理器:
主要有FLowlayout 从左到右从上到下
BorderLayout EWSN Center
GridLayout(行,列,行宽,列宽);
CardLayout

卡片布局实现过程
JPanel使用卡片布局,添加对应用卡片页面,设置时间实现卡片切换

事件:
步骤:
①建立事件源
②为事件源对象选择合适事件监听器
③为监听器添加合适处理程序
④为监听器与事件源建立联系,绑定,将监听器对象注册到事件源上

定义监听器可选方法:
①GUI程序本身实现监听(不好,违背单一原则,addActionListener(this))
②内部类定义监听器类 new出来,在add
③使用匿名内部类

第二三种成为事件驱动的标准

各种组件使用,注意,得到内容,事件驱动程序如下:

  1 package com.Frame;
  2
  3 import java.awt.Container;
  4 import java.awt.Font;
  5 import java.awt.GraphicsConfiguration;
  6 import java.awt.HeadlessException;
  7 import java.awt.Toolkit;
  8
  9 import javax.swing.JButton;
 10 import javax.swing.JCheckBox;
 11 import javax.swing.JComboBox;
 12 import javax.swing.JFrame;
 13 import javax.swing.JLabel;
 14 import javax.swing.JPasswordField;
 15 import javax.swing.JRadioButton;
 16 import javax.swing.JTextArea;
 17 import javax.swing.JTextField;
 18
 19 /**
 20  * @Author: YuanqiuChen
 21  * @Date:2016-3-11-下午1:09:32
 22  *
 23  *
 24  */
 25
 26 public class MyFrame extends JFrame{
 27
 28     private int width = 1024;
 29     private int height = 1024 * 618 / 1000;
 30     private Container contentP;
 31     private JLabel label;
 32     private JTextField text;
 33     private JPasswordField passwordField;
 34     private JButton button;
 35     private JRadioButton redioBtn;
 36     private JCheckBox checkBox;
 37     private JComboBox comboBox;
 38     private JTextArea textBox;
 39
 40
 41
 42     public MyFrame() throws HeadlessException {
 43         super();
 44         this.setTitle("haha");
 45
 46         this.setSize(width, height);
 47         //设置居中
 48         this.setLocationRelativeTo(null);
 49
 50
 51         //左上角为原点,距离它为XY
 52         Toolkit tool = Toolkit.getDefaultToolkit();
 53         int x = (int)tool.getScreenSize().getWidth();
 54         int y = (int)tool.getScreenSize().getHeight();
 55         this.setLocation((x-this.width)/2, (y-this.height)/2);
 56
 57         //设置标题图片
 58         this.setIconImage(tool.createImage("C:/Users/Administrator/Desktop/11.jpg"));
 59 //        this.setIconImage(tool.createImage("img/e.png"));
 60
 61         this.addContent();
 62         this.setVisible(true);
 63         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 64     }
 65
 66     public void addContent(){
 67
 68         //容器,获得当前容器的内容面板,组件都要加载内容面板里
 69         this.contentP= this.getContentPane();
 70         //布局
 71         this.contentP.setLayout(null);//自然布局,即绝对布局,所以要加坐标
 72
 73         //添加组件
 74         //常用组件:JLabel-文本        JTextField-文本框        JPasswordField-密码框
 75         //JRadioButtom-单选按钮    JCheckBox-复选框        JComboBox-下拉列表
 76         //JTextArea-文本域        JButton-按钮
 77
 78         //JLabel三个常用方法:显示文本,显示图片,显示边框(可以缩小到线条)
 79         //显示背景的时候,可以设置不透明setOpaque为true
 80         //☆如果几个都显示在同一位置,(级别相同)显示层次先添加的在顶层,可见,后添加的在底层,背景
 81         //如果级别不同,有添加顺序才会显示,轻量级的放在重量级的上面,显示的是轻量级的
 82
 83
 84         this.label = new JLabel("用户名");
 85         this.label.setBounds(100, 100, 100, 135);
 86         this.label.setFont(new Font("宋体", Font.PLAIN, 24));
 87
 88         this.contentP.add(this.label);//添加文本组件
 89
 90
 91         this.checkBox = new JCheckBox("运动");
 92         this.checkBox.setBounds(350, 120,180, 135);
 93         this.contentP.add(checkBox);
 94
 95         this.contentP.add(checkBox);
 96     }
 97
 98
 99
100 }

MyFrame

  1 package com.Frame;
  2
  3 import java.awt.Color;
  4 import java.awt.Container;
  5 import java.awt.Font;
  6 import java.awt.Toolkit;
  7
  8 import javax.swing.BorderFactory;
  9 import javax.swing.ButtonGroup;
 10 import javax.swing.JButton;
 11 import javax.swing.JCheckBox;
 12 import javax.swing.JComboBox;
 13 import javax.swing.JFrame;
 14 import javax.swing.JLabel;
 15 import javax.swing.JPasswordField;
 16 import javax.swing.JRadioButton;
 17 import javax.swing.JTextArea;
 18 import javax.swing.JTextField;
 19
 20 /**
 21  * Date: 2016-3-11-下午1:06:22 Class_name: SimpleFrame.java Package_name:
 22  * com.lovo.demo_16 Author: ZhangYue Description:
 23  */
 24 public class SimpleFrame extends JFrame {
 25
 26     private int width;
 27     private int height;
 28     private Container contentP;
 29     private JLabel usernameLabel;
 30     private JLabel passwordLabel;
 31     private JTextField usernameField;
 32     private JPasswordField passwordField;
 33     private JRadioButton maleBtn;
 34     private JRadioButton femaleBtn;
 35     private JCheckBox hobbyCheckBox1;
 36     private JCheckBox hobbyCheckBox2;
 37     private JCheckBox hobbyCheckBox3;
 38     private JComboBox addressCombBox;
 39     private JTextArea describeTextArea;
 40     private JButton submitBtn;
 41     private JButton cancelBtn;
 42
 43     public SimpleFrame() {
 44         this.width = 1024;
 45         this.height = 600;
 46         this.setTitle("我的第一个GUI窗体");
 47         this.setSize(this.width, this.height);
 48         Toolkit tool = Toolkit.getDefaultToolkit();
 49         double width = tool.getScreenSize().getWidth();
 50         double height = tool.getScreenSize().getHeight();
 51         this.setLocation((int) (width - this.width) / 2,
 52                 (int) (height - this.height) / 2);
 53
 54         this.setIconImage(tool.createImage("img/logo.png"));
 55
 56         // this.setLocationRelativeTo(null);//设置窗体居中
 57         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 58
 59         this.addContent();
 60
 61         this.setVisible(true);
 62     }
 63
 64     public void addContent() {
 65         this.contentP = this.getContentPane();
 66         this.contentP.setLayout(null);
 67
 68         //文本 和 输入框
 69         this.usernameLabel = new JLabel("用户名");
 70         this.usernameLabel.setBounds(350, 10, 90,35);
 71         this.usernameLabel.setFont(new Font("宋体", Font.PLAIN, 16));
 72         this.contentP.add(this.usernameLabel);//添加文本组件
 73
 74         this.usernameField = new JTextField();
 75         this.usernameField.setBounds(450, 10, 200,35);
 76         this.contentP.add(this.usernameField);
 77
 78         this.passwordLabel = new JLabel("密    码");
 79         this.passwordLabel.setBounds(350, 60, 90,35);
 80         this.passwordLabel.setFont(new Font("宋体", Font.PLAIN, 16));
 81         this.contentP.add(this.passwordLabel);//添加文本组件
 82
 83         //密码框
 84         this.passwordField = new JPasswordField();
 85         this.passwordField.setBounds(450, 60, 200,35);
 86         this.passwordField.setEchoChar(‘*‘);
 87 //        this.passwordField.setForeground(Color.RED);
 88         this.contentP.add(this.passwordField);
 89
 90
 91         //单选框
 92         JLabel genderTitle = new JLabel("性别");
 93         genderTitle.setBounds(350, 110, 80, 30);
 94         genderTitle.setFont(new Font("宋体", Font.PLAIN, 16));
 95         this.contentP.add(genderTitle);
 96
 97         this.maleBtn = new JRadioButton("男");
 98         this.maleBtn.setBounds(440, 110, 50,35);
 99         this.contentP.add(this.maleBtn);
100         this.femaleBtn = new JRadioButton("女");
101         this.femaleBtn.setBounds(500, 110, 50,35);
102         this.contentP.add(this.femaleBtn);
103         ButtonGroup bp = new ButtonGroup();
104         bp.add(this.maleBtn);
105         bp.add(this.femaleBtn);
106
107         //复选框
108         this.hobbyCheckBox1 = new JCheckBox("运动");
109         this.hobbyCheckBox2 = new JCheckBox("电影");
110         this.hobbyCheckBox3 = new JCheckBox("音乐");
111         this.hobbyCheckBox1.setBounds(350, 160, 80,35);
112         this.hobbyCheckBox2.setBounds(440, 160, 80,35);
113         this.hobbyCheckBox3.setBounds(540, 160, 80,35);
114
115         this.contentP.add(this.hobbyCheckBox1);
116         this.contentP.add(this.hobbyCheckBox2);
117         this.contentP.add(this.hobbyCheckBox3);
118
119         //下拉框
120         this.addressCombBox = new JComboBox(new String[]{"成都", "德阳", "绵阳", "乐山", "资阳"});
121         this.addressCombBox.addItem("达州");
122         this.addressCombBox.addItem("自贡");
123         this.addressCombBox.setSelectedIndex(5);
124         this.addressCombBox.setBounds(350, 210, 120, 25);
125         this.contentP.add(this.addressCombBox);
126
127         //文本域
128         this.describeTextArea = new JTextArea();
129         this.describeTextArea.setBounds(350, 250, 300, 100);
130 //        this.describeTextArea.setColumns(5);
131 //        this.describeTextArea.setRows(3);
132         this.describeTextArea.setBorder(BorderFactory.createLineBorder(Color.BLACK));
133         this.contentP.add(this.describeTextArea);
134
135         //按钮
136         this.submitBtn = new JButton("确定");
137         this.submitBtn.setBounds(400, 400, 80, 30);
138         this.contentP.add(this.submitBtn);
139
140         this.cancelBtn = new JButton("取消");
141         this.cancelBtn.setBounds(500, 400, 80, 30);
142         this.contentP.add(this.cancelBtn);
143
144     }
145
146     public static void main(String[] args) {
147         new SimpleFrame();
148     }
149
150     public int getWidth() {
151         return width;
152     }
153
154     public void setWidth(int width) {
155         this.width = width;
156     }
157
158     public int getHeight() {
159         return height;
160     }
161
162     public void setHeight(int height) {
163         this.height = height;
164     }
165
166     public Container getContentP() {
167         return contentP;
168     }
169
170     public void setContentP(Container contentP) {
171         this.contentP = contentP;
172     }
173
174     public JLabel getUsernameLabel() {
175         return usernameLabel;
176     }
177
178     public void setUsernameLabel(JLabel usernameLabel) {
179         this.usernameLabel = usernameLabel;
180     }
181
182     public JLabel getPasswordLabel() {
183         return passwordLabel;
184     }
185
186     public void setPasswordLabel(JLabel passwordLabel) {
187         this.passwordLabel = passwordLabel;
188     }
189
190     public JTextField getUsernameField() {
191         return usernameField;
192     }
193
194     public void setUsernameField(JTextField usernameField) {
195         this.usernameField = usernameField;
196     }
197
198     public JPasswordField getPasswordField() {
199         return passwordField;
200     }
201
202     public void setPasswordField(JPasswordField passwordField) {
203         this.passwordField = passwordField;
204     }
205
206     public JRadioButton getMaleBtn() {
207         return maleBtn;
208     }
209
210     public void setMaleBtn(JRadioButton maleBtn) {
211         this.maleBtn = maleBtn;
212     }
213
214     public JRadioButton getFemaleBtn() {
215         return femaleBtn;
216     }
217
218     public void setFemaleBtn(JRadioButton femaleBtn) {
219         this.femaleBtn = femaleBtn;
220     }
221
222     public JCheckBox getHobbyCheckBox1() {
223         return hobbyCheckBox1;
224     }
225
226     public void setHobbyCheckBox1(JCheckBox hobbyCheckBox1) {
227         this.hobbyCheckBox1 = hobbyCheckBox1;
228     }
229
230     public JCheckBox getHobbyCheckBox2() {
231         return hobbyCheckBox2;
232     }
233
234     public void setHobbyCheckBox2(JCheckBox hobbyCheckBox2) {
235         this.hobbyCheckBox2 = hobbyCheckBox2;
236     }
237
238     public JCheckBox getHobbyCheckBox3() {
239         return hobbyCheckBox3;
240     }
241
242     public void setHobbyCheckBox3(JCheckBox hobbyCheckBox3) {
243         this.hobbyCheckBox3 = hobbyCheckBox3;
244     }
245
246     public JComboBox getAddressCombBox() {
247         return addressCombBox;
248     }
249
250     public void setAddressCombBox(JComboBox addressCombBox) {
251         this.addressCombBox = addressCombBox;
252     }
253
254     public JTextArea getDescribeTextArea() {
255         return describeTextArea;
256     }
257
258     public void setDescribeTextArea(JTextArea describeTextArea) {
259         this.describeTextArea = describeTextArea;
260     }
261
262     public JButton getSubmitBtn() {
263         return submitBtn;
264     }
265
266     public void setSubmitBtn(JButton submitBtn) {
267         this.submitBtn = submitBtn;
268     }
269
270     public JButton getCancelBtn() {
271         return cancelBtn;
272     }
273
274     public void setCancelBtn(JButton cancelBtn) {
275         this.cancelBtn = cancelBtn;
276     }
277
278
279
280 }

SimpleFrame

  1 package com.Frame;
  2
  3 import java.awt.Color;
  4 import java.awt.Font;
  5 import java.awt.Toolkit;
  6 import java.awt.event.ActionEvent;
  7 import java.awt.event.ActionListener;
  8 import java.awt.event.KeyEvent;
  9 import java.awt.event.KeyListener;
 10
 11 import javax.swing.BorderFactory;
 12 import javax.swing.JButton;
 13 import javax.swing.JFrame;
 14 import javax.swing.JLabel;
 15 import javax.swing.JOptionPane;
 16 import javax.swing.JTextField;
 17
 18
 19
 20 /**
 21  * @Author: YuanqiuChen
 22  * @Date:2016-3-16-下午10:07:13
 23  *
 24  *
 25  */
 26
 27 public class GuessNumUI extends JFrame{
 28     private JLabel la1,la2,laResult;
 29     private JButton yes, no, btnAgain;
 30     private JTextField inputNum;
 31
 32     private int randomNum = (int)(Math.random()*50) + 50;
 33     private int n = 0;
 34
 35     public GuessNumUI(){
 36         this.setSize(600,500);
 37         this.setTitle("猜数字游戏");
 38         this.setLocationRelativeTo(null);//设置窗体居中
 39
 40         addContent();
 41         addEventHandler();
 42
 43         this.setVisible(true);
 44         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 45     }
 46
 47     private void addContent(){
 48         this.setLayout(null);
 49
 50         this.la1 = new JLabel();
 51         this.la1.setBounds(0, 0, 580,180);
 52         this.la1.setBorder(BorderFactory.createTitledBorder("YourGuess"));
 53         this.add(la1);
 54
 55         this.la2 = new JLabel();
 56         this.la2.setBounds(0, 180, 580,180);
 57         this.la2.setBorder(BorderFactory.createTitledBorder("Hint"));
 58         this.add(la2);
 59
 60         this.yes = new JButton("确定");
 61         this.yes.setBounds(200, 390, 60, 30);
 62         this.add(yes);
 63
 64         this.no = new JButton("取消");
 65         this.no.setBounds(300, 390, 60, 30);
 66         this.add(no);
 67
 68         this.btnAgain = new JButton("再来一次");
 69         this.btnAgain.setBounds(400, 390, 100, 30);
 70         this.add(btnAgain);
 71
 72         this.inputNum = new JTextField();
 73         this.inputNum.setFont(new Font("宋体", Font.BOLD, 20));
 74         this.inputNum.setBounds(160, 30, 300, 50);
 75         this.add(inputNum);
 76
 77         this.laResult = new JLabel("Let‘s Play!");
 78         this.laResult.setFont(new Font("宋体", Font.BOLD, 20));
 79         this.laResult.setBounds(200, 230, 300, 50);
 80         this.add(laResult);
 81     }
 82
 83     //添加事件
 84     public void addEventHandler(){
 85         //添加监听器
 86         this.yes.addActionListener(
 87                 new ActionListener() {
 88                     public void actionPerformed(ActionEvent e) {
 89                         guess();
 90                         inputNum.setText("");
 91                     }
 92                 }
 93         );
 94
 95         this.no.addActionListener(
 96                 new ActionListener() {
 97                     public void actionPerformed(ActionEvent e) {
 98                         System.out.println(randomNum);
 99                         System.exit(0);
100                     }
101                 }
102         );
103
104         this.btnAgain.addActionListener(
105                 new ActionListener() {
106                     public void actionPerformed(ActionEvent e) {
107                         yes.setEnabled(true);
108                         randomNum = (int)(Math.random()*50) + 50;
109                         n = 0;
110                         inputNum.setText("");
111                         laResult.setText("再来一次!Come On!");
112                     }
113                 }
114         );
115
116         //把按回车键监听器注册到事件源上
117         EnterKeyEvent enterKeyEvent = new EnterKeyEvent();
118         this.addKeyListener(enterKeyEvent);
119         this.inputNum.addKeyListener(enterKeyEvent);
120         this.yes.addKeyListener(enterKeyEvent);
121
122     }
123
124     private class EnterKeyEvent implements KeyListener{
125         public void keyTyped(KeyEvent e) {}
126         public void keyPressed(KeyEvent e) {
127             if(e.getKeyCode() == KeyEvent.VK_ENTER){
128                 if(yes.isEnabled()){
129                     guess();
130                 }
131                 inputNum.setText("");
132             }
133         }
134         public void keyReleased(KeyEvent e) {}
135
136     }
137
138     public void guess(){
139         System.out.println(randomNum);
140         String inputStr = this.inputNum.getText().trim();
141         int num;
142         if(!inputStr.matches("[0-9]+")){
143             this.laResult.setText("请输入正整数");
144             return;
145         }else{
146             num = Integer.parseInt(inputStr);
147         }
148
149         if(num < 50 || num > 99){
150             this.laResult.setText("请输入50-99的数");
151             return;
152         }
153
154         if(num == randomNum){
155             this.laResult.setText("猜对了,随机数是:" + randomNum);
156             n++;
157             this.yes.setEnabled(false);
158
159 //            long now = System.currentTimeMillis();
160 //            while((System.currentTimeMillis() - now) < 3000){
161 //
162 //            }
163
164             try {
165                 Thread.sleep(3000);
166             } catch (InterruptedException e) {
167                 // TODO Auto-generated catch block
168                 e.printStackTrace();
169             }
170
171 //            int choice = JOptionPane.showConfirmDialog(null, "确认退出");
172 //            if(choice == 0){}
173 //            System.exit(0);
174
175             return;
176         }else{
177             n++;
178             if(num < randomNum){
179                 this.laResult.setText("猜小了");
180             }else{
181                 this.laResult.setText("猜大了");
182             }
183         }
184
185         if(n >= 7){
186             this.laResult.setText(n + "次机会已用完,随机数是:" + randomNum);
187             this.yes.setEnabled(false);
188         }
189     }
190
191     public static void main(String[] args) {
192         new GuessNumUI();
193     }
194
195 }

GuessNumUI

  1 package com.Frame;
  2
  3 import java.awt.BorderLayout;
  4 import java.awt.Color;
  5 import java.awt.Font;
  6 import java.awt.Graphics;
  7 import java.awt.GridLayout;
  8 import java.awt.event.ActionEvent;
  9 import java.awt.event.ActionListener;
 10 import java.util.Random;
 11
 12 import javax.swing.BorderFactory;
 13 import javax.swing.JButton;
 14 import javax.swing.JFrame;
 15 import javax.swing.JLabel;
 16 import javax.swing.JPanel;
 17 import javax.swing.JTextField;
 18 import javax.swing.border.Border;
 19
 20 import com.Frame.test.Delay;
 21
 22 /**
 23  * @Author: YuanqiuChen
 24  * @Date:2016-3-17-上午9:22:57
 25  *
 26  *加入三个面板,直接设置边框
 27  * 比自己写的好处,加入三个面板,面板设置边框
 28  *
 29  * 换颜色
 30  */
 31
 32 public class ChangeColor extends JFrame{
 33
 34     private static final long serialVersionUID = 1L;
 35
 36
 37     private JPanel mianBan1, mianBan2, mianBan3;
 38
 39     private JButton changeColor, ziDongChangeColor;
 40     private JLabel laResult;
 41
 42     private boolean flag = false;
 43
 44     ChangeColorThread t = new ChangeColorThread();
 45
 46     public JButton getZiDongChangeColor() {
 47         return ziDongChangeColor;
 48     }
 49
 50     public void setZiDongChangeColor(JButton ziDongChangeColor) {
 51         this.ziDongChangeColor = ziDongChangeColor;
 52     }
 53
 54     public boolean getFlag() {
 55         return flag;
 56     }
 57
 58     public void setFlag(boolean flag) {
 59         this.flag = flag;
 60     }
 61
 62
 63     public ChangeColor(){
 64         this.setSize(600,500);
 65         this.setTitle("换颜色");
 66         this.setLocationRelativeTo(null);//设置窗体居中
 67
 68         addContent();
 69         addEventHandler();
 70
 71
 72
 73         this.setVisible(true);
 74         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 75     }
 76
 77     private void addContent() {
 78         this.mianBan1 = new JPanel();
 79         this.mianBan1.setLayout(null);
 80         this.mianBan1.setBorder(BorderFactory.createTitledBorder("YourGuess"));
 81
 82         this.mianBan1.setBackground(new Color(200,220,240));
 83
 84
 85
 86         this.mianBan2 = new JPanel();
 87         this.mianBan2.setBorder(BorderFactory.createTitledBorder("Hint"));
 88         this.laResult = new JLabel("Let‘s Play!");
 89         this.laResult.setFont(new Font("宋体", Font.BOLD, 20));
 90         this.mianBan2.add(laResult);
 91
 92
 93
 94         this.mianBan3 = new JPanel();
 95         this.mianBan3.setBorder(BorderFactory.createTitledBorder(""));
 96
 97
 98         this.changeColor = new JButton("换颜色");
 99         this.mianBan3.add(changeColor);
100
101         this.ziDongChangeColor = new JButton("自动换颜色");
102         this.mianBan3.add(ziDongChangeColor);
103
104         this.setLayout(new GridLayout(3,1));
105         this.add(mianBan1);this.add(mianBan2);this.add(mianBan3);
106     }
107
108     private void addEventHandler() {
109         this.changeColor.addActionListener(new ActionListener() {
110             @Override
111             public void actionPerformed(ActionEvent e) {
112                 mianBan1.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
113                 mianBan2.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
114                 mianBan3.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
115
116             }
117         });
118
119
120         this.ziDongChangeColor.addActionListener(new ActionListener() {
121             private Delay d = new Delay();
122             public void actionPerformed(ActionEvent e) {
123
124                 if(flag){
125                     flag = false;
126 //                    t.stop();
127                 }else{
128                     flag = true;
129 //                    t.start();
130                     new ChangeColorThread().start();
131
132                 }
133                 System.out.println(flag);
134             }
135         });
136
137
138     }
139
140     public void delay(int i){
141 //        long now = System.currentTimeMillis();
142 //        while(System.currentTimeMillis() - now < i){
143 //        }
144 //        for(int j = 0; j < i*10; j++ ){
145 //            System.out.println(11111);
146 //        }
147     }
148
149     public void changeColor(){
150         mianBan1.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
151         mianBan2.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
152         mianBan3.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
153     }
154
155     public static void main(String[] args) {
156         new ChangeColor();
157     }
158
159     public void paint(Graphics g) {
160         Random r = new Random();
161         mianBan1.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
162         mianBan2.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
163         mianBan3.setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
164
165     }
166
167     //在Java的界面里边,不能出现太多的for循环,线程等待等,否则就会跟新显示不对,直接卡死,或者只显示最后一个图像
168     //必须放在线程里边才对
169     class ChangeColorThread extends Thread {
170         //问题,开始时为true,最后再false,可以运行一段时间结束
171         //开始为false,切换为真,不可以运行,因为顺序运行
172         public void run() {
173             while (flag) {
174                     System.out.println("thread"+flag);
175                     repaint();
176                     try {
177                         Thread.sleep(1000);
178                     } catch (InterruptedException e) {
179                         e.printStackTrace();
180                     }
181             }
182         }
183     }
184 }

ChangeColor

  1 package com.Frame;
  2
  3 import java.awt.BorderLayout;
  4 import java.awt.GridLayout;
  5 import java.awt.event.ActionEvent;
  6 import java.awt.event.ActionListener;
  7 import java.awt.event.KeyEvent;
  8 import java.awt.event.KeyListener;
  9
 10 import javax.print.attribute.standard.OutputDeviceAssigned;
 11 import javax.swing.JButton;
 12 import javax.swing.JFrame;
 13 import javax.swing.JLabel;
 14 import javax.swing.JOptionPane;
 15 import javax.swing.JPanel;
 16 import javax.swing.JPasswordField;
 17 import javax.swing.JTextField;
 18
 19 /**
 20  * @Author: YuanqiuChen
 21  * @Date:2016-3-15-下午10:02:56
 22  *
 23  *
 24  */
 25
 26 public class Login extends JFrame{
 27
 28     private JLabel laAccount, lapassword;
 29     private JTextField textAccount;
 30     private JPasswordField  textPassword;
 31     private JButton btnLogin;
 32     private JPanel mianBan1, mianBan2, mianBan3;
 33
 34     public Login(){
 35         init();
 36         this.pack();
 37 //        this.setSize(500,500);
 38
 39         this.setTitle("登录");
 40         this.setLocationRelativeTo(null);
 41         this.setResizable(false);
 42         this.setVisible(true);
 43         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 44
 45     }
 46
 47     private void init(){
 48         this.laAccount = new JLabel("账号:");
 49         this.lapassword = new JLabel("密码:");
 50         this.textAccount = new JTextField("测试账号:123,密码123",20);
 51         this.textPassword = new JPasswordField(20);
 52         this.btnLogin = new JButton("登录");
 53
 54         this.setLayout(new GridLayout(3,1));
 55         this.mianBan1 = new JPanel();mianBan2 = new JPanel();mianBan3 = new JPanel();
 56
 57         this.mianBan1.add(laAccount);this.mianBan1.add(textAccount);
 58         this.mianBan2.add(lapassword);this.mianBan2.add(textPassword);
 59         this.mianBan3.add(btnLogin);
 60
 61
 62         //面板可以添加到面板里边
 63 //        mianBan1.add(mianBan2);
 64
 65         this.add(mianBan1);this.add(mianBan2);this.add(mianBan3);
 66
 67
 68         //添加事件
 69         addEventHandler();
 70     }
 71
 72     //验证登录
 73     private void check(){
 74         if(textAccount.getText().trim().equals("123") && textPassword.getText().trim().equals("123")){
 75             mianBan1.setVisible(false);
 76             mianBan2.setVisible(false);
 77             mianBan3.setVisible(false);
 78
 79
 80             JOptionPane.showMessageDialog(mianBan1, "登录成功", "登录提示", JOptionPane.INFORMATION_MESSAGE);
 81 //            System.out.println("haha");
 82         }else{
 83             JOptionPane.showMessageDialog(null, "登录失败", "登录提示", JOptionPane.WARNING_MESSAGE);
 84 //            System.out.println("cuo");
 85         }
 86
 87     }
 88
 89     //添加事件处理
 90     private void addEventHandler(){
 91         this.textPassword.addKeyListener(new KeyListener() {
 92             public void keyTyped(KeyEvent e) {}
 93             public void keyReleased(KeyEvent e) {}
 94
 95             public void keyPressed(KeyEvent e) {
 96                 if(e.getKeyCode() == KeyEvent.VK_ENTER){
 97                     check();
 98                 }
 99             }
100         });
101         //添加监听器
102         this.btnLogin.addActionListener(
103             new ActionListener() {
104                 public void actionPerformed(ActionEvent e) {
105 //                                this.textAccount.getText();//这里不能加this表示当前对象,不对
106                     check();
107                 }
108             }
109         );
110     }
111
112     public static void main(String[] args) {
113         new Login();
114     }
115
116 }

Login

布局:

 1 package com.gui_layout;
 2
 3 import java.awt.BorderLayout;
 4 import java.awt.Container;
 5 import java.awt.FlowLayout;
 6
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JLabel;
10
11 /**
12  * Date: 2016-3-16-上午9:38:46
13  * Class_name: BorderLayoutTest.java
14  * Package_name: com.lovo.demo_16
15  * Author: ZhangYue
16  * Description:
17  */
18 public class BorderLayoutTest extends JFrame{
19
20     public BorderLayoutTest(){
21         this.setSize(900,600);
22         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23         this.setTitle("边界布局");
24         this.setLocationRelativeTo(null);//设置窗体居中
25
26         this.addContent();
27
28         this.setVisible(true);
29     }
30
31
32     public void addContent(){
33         Container con = this.getContentPane();
34         con.setLayout(new BorderLayout());
35
36         JButton btn1 = new JButton("确定1");
37         JButton btn2 = new JButton("确定2");
38         JButton btn3 = new JButton("确定3");
39         JButton btn4 = new JButton("确定4");
40         JButton btn5 = new JButton("确定5");
41
42         con.add(btn1, BorderLayout.EAST);
43         con.add(btn2, BorderLayout.WEST);
44         con.add(btn3, BorderLayout.NORTH);
45         con.add(btn4, BorderLayout.SOUTH);
46         con.add(btn5, BorderLayout.CENTER);
47     }
48
49
50     public static void main(String[] args) {
51         new BorderLayoutTest();
52     }
53 }

BorderLayoutTest

 1 package com.gui_layout;
 2
 3 import java.awt.Container;
 4 import java.awt.FlowLayout;
 5
 6 import javax.swing.JButton;
 7 import javax.swing.JFrame;
 8 import javax.swing.JLabel;
 9
10 /**
11  * Date: 2016-3-16-上午9:15:36
12  * Class_name: FlowLayoutTest.java
13  * Package_name: com.lovo.demo_16
14  * Author: ZhangYue
15  * Description:
16  */
17 public class FlowLayoutTest extends JFrame{
18
19     public FlowLayoutTest(){
20         this.setSize(900,600);
21         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22         this.setTitle("流布局");
23         this.setLocationRelativeTo(null);//设置窗体居中
24
25         this.addContent();
26
27         this.setVisible(true);
28     }
29
30
31     public void addContent(){
32         Container con = this.getContentPane();
33
34         con.setLayout(new FlowLayout());
35
36         JLabel label = new JLabel("Test");
37         JButton btn = new JButton("根据元素内容确定大小");
38         JButton btn2 = new JButton("确定");
39         JButton btn3 = new JButton("确定");
40         JButton btn4 = new JButton("确定");
41         JButton btn5 = new JButton("确定5");
42
43         con.add(label);
44         con.add(btn);
45         con.add(btn2);
46         con.add(btn3);
47         con.add(btn4);
48         con.add(btn5);
49     }
50
51
52     public static void main(String[] args) {
53         new FlowLayoutTest();
54     }
55
56 }

FlowLayoutTest

 1 package com.gui_layout;
 2
 3 import java.awt.BorderLayout;
 4 import java.awt.Container;
 5 import java.awt.GridLayout;
 6
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9
10 /**
11  * Date: 2016-3-16-上午10:25:29
12  * Class_name: GridLayoutTest.java
13  * Package_name: com.lovo.demo_16
14  * Author: ZhangYue
15  * Description:
16  */
17 public class GridLayoutTest extends JFrame {
18
19     public GridLayoutTest(){
20         this.setSize(900,600);
21         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22         this.setTitle("网格布局");
23         this.setLocationRelativeTo(null);//设置窗体居中
24
25         this.addContent();
26
27         this.setVisible(true);
28     }
29
30
31     public void addContent(){
32         Container con = this.getContentPane();
33         con.setLayout(new GridLayout(2,3));
34
35         JButton btn1 = new JButton("确定1");
36         JButton btn2 = new JButton("确定2");
37         JButton btn3 = new JButton("确定3");
38         JButton btn4 = new JButton("确定4");
39         JButton btn5 = new JButton("确定5");
40         JButton btn6 = new JButton("确定6");
41         JButton btn7 = new JButton("确定7");
42         JButton btn8 = new JButton("确定8");
43         JButton btn9 = new JButton("确定9");
44
45         con.add(btn1);
46         con.add(btn2);
47         con.add(btn3);
48         con.add(btn4);
49         con.add(btn5);
50         con.add(btn6);
51         con.add(btn7);
52         con.add(btn8);
53         con.add(btn9);
54     }
55
56
57     public static void main(String[] args) {
58         new GridLayoutTest();
59     }
60
61 }

GridLayoutTest

录入学生信息,写入文件,也可以显示学生信息:

  1 package com.io.showStudentInfo;
  2
  3 import java.awt.Color;
  4 import java.awt.Font;
  5 import java.awt.GridLayout;
  6 import java.awt.event.ActionEvent;
  7 import java.awt.event.ActionListener;
  8 import java.util.HashSet;
  9 import java.util.Set;
 10
 11 import javax.swing.BorderFactory;
 12 import javax.swing.JButton;
 13 import javax.swing.JComboBox;
 14 import javax.swing.JFrame;
 15 import javax.swing.JLabel;
 16 import javax.swing.JPanel;
 17 import javax.swing.JScrollBar;
 18 import javax.swing.JScrollPane;
 19 import javax.swing.JTextArea;
 20 import javax.swing.JTextField;
 21
 22 import com.io.showStudentInfo.Student;
 23
 24 /**
 25 //所有面板和首层容器都设置绝对布局,然后面板里边所有东西都设置位置和大小,面板也设置位置和大小,绝对不会错
 26  * @Author: YuanqiuChen
 27  * @Date:2016-3-18-下午8:13:57
 28  *
 29  *录入学生信息,写入文件,也可以显示学生信息
 30  *
 31  */
 32
 33 public class ShowStudentInfo extends JFrame{
 34
 35     private JButton saveInfo, showInfo;
 36     private JLabel laName, laAge, laGender, laScore;
 37     private JTextField textName, textAge, textScore;
 38     private JTextArea showText;
 39     private JComboBox boxGender;
 40
 41     private Set<Student> allStu = new HashSet<Student>();
 42
 43     public ShowStudentInfo(){
 44         init();
 45 //        this.pack();
 46         this.setSize(350, 600);
 47
 48         this.setTitle("学生信息录入系统");
 49         this.setLocationRelativeTo(null);
 50         this.setResizable(false);
 51         this.setVisible(true);
 52         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 53
 54     }
 55
 56     //初始化
 57     private void init(){
 58         addContent();
 59         addEventHandler();
 60     }
 61
 62     private void addContent() {
 63         JPanel mianBan1 = new JPanel();
 64         mianBan1.setLayout(null);
 65
 66         saveInfo = new JButton("录入信息");
 67         saveInfo.setBounds(60, 200, 100, 35);
 68         saveInfo.setFont(new Font("宋体", Font.PLAIN, 16));
 69
 70         showInfo = new JButton("显示信息");
 71         showInfo.setBounds(180, 200, 100, 35);
 72         showInfo.setFont(new Font("宋体", Font.PLAIN, 16));
 73
 74         laName = new JLabel("姓名:");
 75         laName.setBounds(40, 40, 80, 35);
 76         laName.setFont(new Font("宋体", Font.PLAIN, 20));
 77
 78         laAge = new JLabel("年龄:");
 79         laAge.setBounds(40, 80, 80, 35);
 80         laAge.setFont(new Font("宋体", Font.PLAIN, 20));
 81
 82         laGender = new JLabel("性别:");
 83         laGender.setBounds(40, 160, 80, 35);
 84         laGender.setFont(new Font("宋体", Font.PLAIN, 20));
 85
 86         laScore = new JLabel("成绩:");
 87         laScore.setBounds(40,120, 80, 35);
 88         laScore.setFont(new Font("宋体", Font.PLAIN, 20));
 89
 90         textName = new JTextField();
 91         textName.setBounds(120,40, 175, 35);
 92         textName.setFont(new Font("宋体", Font.PLAIN, 20));
 93
 94         textAge = new JTextField();
 95         textAge.setBounds(120,80, 175, 35);
 96         textAge.setFont(new Font("宋体", Font.PLAIN, 20));
 97
 98         textScore = new JTextField();
 99         textScore.setBounds(120,120, 175, 35);
100         textScore.setFont(new Font("宋体", Font.PLAIN, 20));
101
102         boxGender = new JComboBox(new String[]{"男","女"});
103         boxGender.setBounds(120,160, 75, 35);
104         boxGender.setFont(new Font("宋体", Font.PLAIN, 20));
105
106         //文本域
107         showText = new JTextArea();
108 //        showText.setBounds(10, 250, 320, 300);//
109         showText.setFont(new Font("宋体", Font.PLAIN, 20));
110         showText.setBorder(BorderFactory.createLineBorder(Color.BLACK));
111
112         //设置不可以直接编辑JTextArea里的内容,可以复制
113         showText.setEditable(false);
114
115         //设置自动换行
116 //        showText.setLineWrap(true);
117
118         //实现滚动,后边两个是初始化视图显示水平和垂直滚动条
119 //        JScrollPane mianBan2=new JScrollPane(showText,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
120         JScrollPane mianBan2=new JScrollPane(showText);
121         mianBan2.setBounds(10, 250, 320, 300);
122
123
124         mianBan1.add(laName);mianBan1.add(textName);
125         mianBan1.add(laAge);mianBan1.add(textAge);
126         mianBan1.add(laGender);mianBan1.add(boxGender);
127         mianBan1.add(laScore);mianBan1.add(textScore);
128         mianBan1.add(saveInfo);mianBan1.add(showInfo);
129
130 //        mianBan1.setBounds(0, 0, 340, 250);
131
132 //        this.setLayout(null);
133         this.add(mianBan2);
134         this.add(mianBan1);
135
136     }
137
138     private void addEventHandler() {
139         this.saveInfo.addActionListener(new ActionListener() {
140             public void actionPerformed(ActionEvent e) {
141                 showText.setText("");
142                 if(textName.getText().trim().equals("")){
143                     showText.setText("请输入姓名!");
144                     return;
145                 }
146                 if(!(textAge.getText().trim().matches("[1-9]{1}[0-9]?"))){
147                     showText.setText("请输入有效年龄!(1-99)");
148                     return;
149                 }
150                 if(!(textScore.getText().trim().matches("(0|100|[1-9]{1}[0-9]?)"))){
151                     showText.setText("请输入有效成绩!(0-100)");
152                     return;
153                 }
154                 String gender = (String)boxGender.getSelectedItem();
155
156                 allStu = StudentStream.readStudents("file/student.txt");
157
158                 allStu.add(new Student(textName.getText(), Integer.parseInt(textAge.getText()), gender, Integer.parseInt(textScore.getText())));
159                 StudentStream.saveStudents(allStu, "file/student.txt");
160                 showText.setText("存入成功");
161
162             }});
163
164         this.showInfo.addActionListener(new ActionListener() {
165             public void actionPerformed(ActionEvent e) {
166                 allStu = StudentStream.readStudents("file/student.txt");
167                 showText.setText("");
168
169                 if(allStu.isEmpty()){
170                     showText.setText("还没有任何信息");
171                     return;
172                 }
173
174                 showText.setText("姓名\t年龄\t性别\t成绩\n");
175                 for(Student su : allStu){
176                     showText.append(su.toString() + "\n");
177                 }
178             }});
179
180     }
181
182     public static void main(String[] args) {
183         new ShowStudentInfo();
184     }
185
186 }

ShowStudentInfo

 1 package com.io.showStudentInfo;
 2
 3 import java.io.Serializable;
 4
 5 public class Student implements Serializable{
 6
 7     private String name;
 8     private int age;
 9     private String gender;
10     private int score;
11
12
13     public Student() {
14         super();
15     }
16
17
18     public Student(String name, int age, String gender, int score) {
19         super();
20         this.name = name;
21         this.age = age;
22         this.gender = gender;
23         this.score = score;
24     }
25
26
27     public int getScore() {
28         return score;
29     }
30
31
32     public void setScore(int score) {
33         this.score = score;
34     }
35
36
37     public String getName() {
38         return name;
39     }
40     public void setName(String name) {
41         this.name = name;
42     }
43     public int getAge() {
44         return age;
45     }
46     public void setAge(int age) {
47         this.age = age;
48     }
49     public String getGender() {
50         return gender;
51     }
52     public void setGender(String gender) {
53         this.gender = gender;
54     }
55
56     public String toString(){
57
58         return this.getName() + "\t" + this.getAge() + "\t" + this.getGender() + "\t" + this.getScore();
59
60     }
61
62
63
64 }

Student

 1 package com.io.showStudentInfo;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.FileReader;
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 import java.io.ObjectInputStream;
11 import java.io.ObjectOutputStream;
12 import java.io.OutputStream;
13 import java.util.HashSet;
14 import java.util.Set;
15
16 import com.io.showStudentInfo.Student;
17
18 /**
19  * Date: 2016-3-18-下午4:00:53
20  * Class_name: StudentStream.java
21  * Package_name: com.lovo.demo_17_2
22  * Author: ZhangYue
23  * Description:
24  */
25 public class StudentStream {
26
27     public static void saveStudents(Set<Student> allStu, String filePath){
28         try {
29
30             File  file= new File(filePath);
31             if(!file.exists()){
32                 file.createNewFile();
33             }
34
35             ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
36
37             out.writeObject(allStu);
38
39             out.close();
40         } catch (FileNotFoundException e) {
41             e.printStackTrace();
42         } catch (IOException e) {
43             // TODO Auto-generated catch block
44             e.printStackTrace();
45         }
46     }
47
48     @SuppressWarnings("unused")
49     public static Set<Student> readStudents(String filePath){
50
51         try {
52
53             //三种方法,判断文件是否为空
54             if(new File(filePath).length() == 0){
55                 return new HashSet<Student>();
56             }
57 //            if(new FileInputStream(new File(filePath)).read() == -1){
58 //                return new HashSet<Student>();
59 //            }
60 //            if(new FileInputStream(new File(filePath)).available() == 0){
61 //                return new HashSet<Student>();
62 //            }
63
64
65             ObjectInputStream inObj = new ObjectInputStream(new FileInputStream(filePath));
66
67             Object obj = inObj.readObject();
68
69             @SuppressWarnings("unchecked")
70             Set<Student> stu = (Set<Student>)obj;
71
72             inObj.close();
73             return stu;
74         } catch (FileNotFoundException e) {
75             e.printStackTrace();
76         } catch (IOException e) {
77             e.printStackTrace();
78         } catch (ClassNotFoundException e) {
79             e.printStackTrace();
80         }
81
82         return null;
83     }
84 }

StudentStream

时间: 2024-10-19 15:21:40

3,13Java基础知识:GUI全部的相关文章

python基础知识-GUI编程-TK-StringVar

1.如何引出StringVar 之前一直认为StringVar就是类似于Java的String类型的对象变量,今天在想要设置StringVar变量的值的时候,通过搜索发现StringVar并不是python内建的对象,而是属于Tkinter下的对象.这个引起了我的兴趣,觉得需要针对性的进行学习 2.StringVar的作用 查询了很多资料,我们在使用界面编程的时候,有些时候是需要跟踪变量的值的变化,以保证值的变更随时可以显示在界面上.由于python无法做到这一点,所以使用了tcl的相应的对象,

Java基础知识_毕向东_Java基础视频教程笔记(22-25 GUI 网络编程 正则)

22天-01-GUIGUI:Graphical User Interface 图形用户接口 Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中CLI:Common line User Interface 命令行用户接口 Awt:Abstract Window ToolKit(抽象工具包),需要调用本地系统方法实现功能,属于重量级控件.Swing:在Awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件. 继

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识

前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy.Pandas和Matplotlib三个包.目录:        一.Python常用扩展包        二.Numpy科学计算包        三.Pandas数据分析包        四.Matplotlib绘图包 前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.K

2、linux基础知识与技能

2.1.linux内核.发行版linux本身指的是一个操作系统内核,只有内核是无法直接使用的.我们需要的,可以使用的操作系统是一个包含了内核和一批有用的应用程序的一个集合体,这个就叫linux发行版.ubuntu.redhat就是linux的不同的发行版.2.2.GUI(图形用户界面)和cmdline(命令行)GUI:grahics user interface,图形用户界面.cmdline:command line,命令行.人机交互:人和机器(计算机)进行交互,常用的有命令行和GUI.Wind

linux基础知识第一节

用户接口: 是一种独特的应用程序,能够为用户提供启动其它应用程序的的机制 cli:命令提示符,用户输入要执行的命令即可, shell: 外壳 sh ,csh ,ksh ,   bash, zsh , tcsh gui: 通过点击操作来启动应用程序 gnome,  mainframe  大型机 多用户操作系统    多终端   终端:设备,显示器,鼠标,键盘 虚拟终端 表示:/dev/tty# ctrl-alt-f(1-6) 物理终端(控制终端)console 串行终端 伪终端 /dev/pts#

第1天:了解Java基础知识

Java的优势 1. 简单 不像C或者C++语言,Java中省去了对指针的操作.但是,Java中并没有省去指针,代替指针的是一种新的变量--引用,引用也是保存一个对象的内存地址. 2.方便 Java虚拟机自带垃圾回收器,能够自动回收内存资源.而C和C++语言,需要开发人员手动进行内存资源回收. 3.安全 不支持指针操作 4.平台无关性 Java语言是跨平台的,一次编译,到处运行. 而且,不同平台,C语言中数据类型所占的位数是不同的,而Java语言中,数据类型所占的位数是固定的. 5.面向对象 J

Linux基础知识(2)

Linux基础知识: 一.程序管理: (1)程序的组成部分: (2)二进制程序: (3)配置文件: (4)库文件: (5)帮助文件: 二.程序包管理器: X: (1)程序的组成文件打包成一个或有限几个文件: (2)安装: (3)卸载: (4)查询: 三.安装Linux: 虚拟机安装Linux系统 需要设置计算机的CPU, 内存, IO等 四.虚拟化软件程序: vmwareworkstation和virtualbox虚拟机都可以安装系统 五.CentOS的镜像站点: http://mirrors.

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网络上传输的数据量. TCP协议 TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议. 连接建立 TC