文章目录

  • Swing特点
  • 窗体组件类结构
  • 常用Swing组件
  • 窗体 JFrame
  • JDialog 对话框
  • JLabel 标签
  • 图片的使用
  • 绝对布局
  • 流布局
  • 边界布局 BorderLayout
  • 网格布局
  • 网格组布局管理器
  • 下拉框
  • 文本框
  • 密码框
  • 文本域
  • 动作事件监听器
  • 焦点监听器

Swing特点

Swing是一个用于开发桌面图形用户界面应用程序的JAVA包,是基于AWT开发的,故AWT是Swing的基础,AWT的全称为抽象窗口工具包(Abstract Window Toolkit,是java开发用户界面程序的基本工具包,Swing提供了大量的轻量组件的组件集,其中一部分是AWT所缺少的,即为Swing的附加组件,还有一部分是由Swing提供的用来替代AWT重量组件的轻量组件。此外,因为Swing还提供了一个用于实现包含插入式界面样式等特性的图形用户界面的下层组件,使得Swing组件在不同的平台上都能够保持组件的界面样式特性。

窗体组件类结构

常用Swing组件

  • JFrame 窗体
  • JDialog 对话框
  • JPanel 面板
  • JButton 按钮
  • JLabel 标签
  • JCheakBox 多选按钮
  • JRadioButton 单选按钮
  • JTextField 文本框
  • JPassword 密码框
  • JComBox 下拉框
  • JTextArea 文本域
  • JList 列表框
  • JOptionPane 小对话框

下面,就来对这些组件做详细的介绍,当然,主要以代码来做进一步说明。

窗体 JFrame

窗体,作为组件的载体,是展现组件的根本,也可以说是最外层的容器。

import java.awt.*;import javax.swing.*;public class Demo
{public static void main(String[] args) {JFrame f = new JFrame("窗体标题");//创建窗体对象并设置标题f.setVisible(true);//设置窗体可见/** 窗体关闭规则:* EXIT_ON_CLOSE 隐藏窗体,并停止程序* DO_NOTHING_ON_CLOSE 无任何操作* HIDE_ON_CLOSE 隐藏窗体,但不停止程序* DISPOSE_ON_CLOSE 释放窗体资源*/f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//      f.setSize(300,200);//设置窗体的大小,单位是像素
//      f.setLocation(200,200);//设置坐标,单位是像素f.setBounds(200, 200, 300, 200);//设置窗体的坐标和大小,单位是像素Container c = f.getContentPane();//获取窗体容器c.setBackground(Color.WHITE);//设置背景颜色JLabel l = new JLabel("这是一个窗体");c.add(l);
//      c.remove(l);//删除组件c.validate();//验证容器中的组件,相当于刷新
//      f.setContentPane(c);//重新载入容器f.setResizable(false);//设置窗体是否可以改变大小System.out.println("x="+f.getX()+" y="+f.getY());//获取窗口坐标/** 注意:在实际开发中,使目前所在类继承JFrame类,在构造方法中对窗口进行* 初始化不必再创建窗体对象*/}}

JDialog 对话框

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Demo1 extends JDialog {public Demo1(JFrame frame){//阻塞/*第一个参数  父窗体对象* 第二个参数 对话框标题* 第三个参数 是否可以堵塞*/super(frame, "对话框标题", true);Container c = getContentPane();//获取窗体容器c.add(new JLabel("这是一个对话框"));//     setVisible(true);//设置窗体可见setBounds(200, 200, 300, 200);//设置窗体坐标和大小}public static void main(String[] args) {JFrame f = new JFrame("父窗口");f.setBounds(50, 50, 200, 200);Container c = f.getContentPane();JButton btn = new JButton("弹出对话框");c.setLayout(new FlowLayout());//设置布局,使用流布局c.add(btn);f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);btn.addActionListener(new ActionListener() {//添加监听public void actionPerformed(ActionEvent e) {Demo1 d = new Demo1(f); d.setVisible(true);}});c.validate();}}

JLabel 标签

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;import javax.swing.*;public class Demo2 extends JFrame
{public Demo2(){setBounds(200, 200, 300, 200);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();setVisible(true);JLabel l = new JLabel("这是一个标签");
//      l.setText("更改标签内容");
//      System.out.println(l.getText());/** 更改字体样式* 第一个参数为字体类型* 第二个参数为字体格式* 第三个参数为字体大小*/l.setFont(new Font("楷体",Font.BOLD,15));l.setForeground(Color.RED);    //更改字体颜色c.add(l);}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo2();}}

图片的使用

import java.awt.Container;
import java.awt.Image;
import java.net.URL;import javax.swing.*;public class Demo3 extends JFrame
{public Demo3(){setBounds(200, 200, 300, 200);setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);Container c = getContentPane();JLabel l = new JLabel("这是一个展示图片的标签");//方法一
//      URL url = Demo3.class.getResource("java.png");//获取图片URL路径
//      System.out.println(url);
//      Icon icon = new ImageIcon(url);//获取相应路径下的图片文件//方法二Icon icon = new ImageIcon("src/bilibili/java.png");l.setIcon(icon);//添加图片l.setSize(20, 20);//设置标签大小,即使设置标签大小,也不会改变图片大小c.add(l);setVisible(true);}public static void main(String[] args){new Demo3();}}

绝对布局

硬性决定组件在窗体中的位置及大小,也叫null布局

import java.awt.Container;import javax.swing.JButton;
import javax.swing.JFrame;public class Demo4 extends JFrame{public Demo4(){setBounds(100, 100, 200, 150);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c =getContentPane();c.setLayout(null);;//将容器的布局设置为绝对布局JButton b1 =new JButton("按钮一");JButton b2 = new JButton("按钮二");b1.setBounds(10, 30, 80, 30);//设置按钮在容器中的坐标和大小b2.setBounds(120, 30, 80, 30);c.add(b1);c.add(b2);setVisible(true);}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo4();}}

流布局

从左到右排列,默认居中对齐

import java.awt.Container;
import java.awt.FlowLayout;import javax.swing.*;public class Demo5 extends JFrame
{public Demo5(){setTitle("窗口标题");setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();/** 参数一:对齐方式* 参数二:水平间距* 参数三:垂直间距*/c.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));//给容器设置为流布局for(int i=0;i<10;i++){c.add(new JButton("按钮"+i));}setVisible(true);}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo5();}}

边界布局 BorderLayout

import java.awt.BorderLayout;
import java.awt.Container;import javax.swing.*;public class Demo6 extends JFrame
{public Demo6(){setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c =getContentPane();c.setLayout(new BorderLayout());//设置为边界布局,默认为边界布局JButton b1 = new JButton("中");JButton b2 = new JButton("东");JButton b3 = new JButton("西");JButton b4 = new JButton("南");JButton b5 = new JButton("北");c.add(b1,BorderLayout.CENTER);c.add(b2, BorderLayout.EAST);c.add(b3, BorderLayout.WEST);c.add(b4,BorderLayout.SOUTH);c.add(b5, BorderLayout.NORTH);c.add(new JButton("新组件覆盖旧组件"));setVisible(true);}public static void main(String[] args) {new Demo6();}
}

网格布局

import java.awt.Container;
import java.awt.GridLayout;import javax.swing.*;public class Demo7 extends JFrame
{public Demo7(){setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();/** 设置为网格布局,设置为7行三列,水平间距为5像素,垂直间距为10像素*/c.setLayout(new GridLayout(7,3,5,10));for(int i=0;i<20;i++){c.add(new JButton("按钮"+i));}setVisible(true);}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo7();}
}

网格组布局管理器


import java.awt.*;import javax.swing.*;public class Demo9 {JFrame f =new JFrame();Container c =f.getContentPane();void creatFrame(){// 先设置大小,在居中    f.setSize(800,600);f.setLocationRelativeTo(null);   //居中f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);c.setLayout(new GridBagLayout());}//gridx gridyvoid init(){//默认为边界布局GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 0;g1.gridy = 0;c.add(new JButton("组件一"),g1);GridBagConstraints g2 = new GridBagConstraints();g2.gridx = 1;g2.gridy = 1;c.add(new JButton("组件二"),g2);GridBagConstraints g3 = new GridBagConstraints();g3.gridx = 2;g3.gridy = 2;c.add(new JButton("组件三"),g3);}void creatButton(){for(int i=0;i<9;i++){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = i;g1.gridy = 0;c.add(new JButton("组件"),g1);GridBagConstraints g2 = new GridBagConstraints();g2.gridx = 0;g2.gridy = i;c.add(new JButton("组件"),g2);}}void init2(){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 1;g1.gridy = 1;c.add(new JButton("组件"),g1);GridBagConstraints g2 = new GridBagConstraints();g2.gridx = 2;g2.gridy = 2;g2.gridwidth = 2;g2.gridheight = 1;c.add(new JButton("组件"),g2);GridBagConstraints g3 = new GridBagConstraints();g3.gridx = 4;g3.gridy = 4;g3.gridwidth = 2;g3.gridheight = 2;c.add(new JButton("组件"),g3);}void init3(){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 1;g1.gridy = 1;g1.gridwidth = 2;g1.gridheight = 2;c.add(new JButton("none"),g1);GridBagConstraints g2 = new GridBagConstraints();g2.gridx = 3;g2.gridy = 1;g2.gridwidth = 2;g2.gridheight = 2;g2.fill = GridBagConstraints.HORIZONTAL;//水平填充c.add(new JButton("HORIZONTAL"),g2);GridBagConstraints g3 = new GridBagConstraints();g3.gridx = 5;g3.gridy = 1;g3.gridwidth = 2;g3.gridheight = 2;g3.fill = GridBagConstraints.VERTICAL;//垂直填充c.add(new JButton("VERTICAL"),g3);GridBagConstraints g4 = new GridBagConstraints();g4.gridx = 7;g4.gridy = 1;g4.gridwidth = 2;g4.gridheight = 2;g4.fill = GridBagConstraints.BOTH;//全填充c.add(new JButton("BOTH"),g4);}void init4(){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 1;g1.gridy = 1;g1.gridwidth = 2;g1.gridheight = 2;g1.anchor = GridBagConstraints.NORTH;c.add(new JButton("@"),g1);g1.fill = GridBagConstraints.BOTH;g1.anchor = GridBagConstraints.CENTER;JPanel p =new JPanel();p.setBackground(Color.BLUE);c.add(p,g1);}void init5(){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 1;g1.gridy = 1;g1.gridwidth = 2;g1.gridheight = 2;g1.insets = new Insets(0, 0, 0, 0);c.add(new JButton("组件"),g1);g1.fill = GridBagConstraints.BOTH;g1.anchor = GridBagConstraints.CENTER;JPanel p =new JPanel();p.setBackground(Color.BLUE);c.add(p,g1);}void init6(){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 2;g1.gridy = 2;g1.ipadx = 10;g1.ipady = 10;c.add(new JButton("组件"),g1);GridBagConstraints g2 = new GridBagConstraints();       g2.gridx = 4;g2.gridy = 2;g2.ipadx = -10;g2.ipady = -10;c.add(new JButton("组件"),g2);}void init7(){GridBagConstraints g1 = new GridBagConstraints();g1.gridx = 2;g1.gridy = 2;g1.weightx = 10;g1.weighty = 10;c.add(new JButton("组件"),g1);}public static void main(String[] args) {// TODO 自动生成的方法存根Demo9 d =new Demo9();d.creatFrame();
//      d.init();d.creatButton();
//      d.init2();
//      d.init3();
//      d.init4();
//      d.init5();
//      d.init6();d.init7();d.f.setVisible(true);}}

下拉框

import java.awt.*;import javax.swing.*;public class Demo11 extends JFrame{public Demo11(){setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();c.setLayout(null);//null 为绝对布局//     JButton btn = new JButton("null布局");
//      btn.setBounds(0,0,88,88);
//      c.add(btn);//       JButton btn = new JButton("默认布局");
//      btn.setBounds(0, 0, 88, 88);
//      c.add(btn);String[] items = {"元素1","元素2","元素3","元素4","元素5","元素6","元素7"};//方法一
//      JList<String> list = new JList<String>(items); //方法二DefaultListModel<String> model = new DefaultListModel<String>();for(String tmp : items){model.addElement(tmp);}JList<String> j1 = new JList<String>();model.addElement("添加元素");j1.setModel(model);//选择模式/*SINGLE_SELECTION 单选* SINGLE_INTERVAL_SELECTION 只能连续选择相邻的元素* MULTIPLE_INTERVAL_SELECTION 随便选*/j1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);//创建滚动面板JScrollPane jsp = new JScrollPane(j1);//为列表框添加滚动面板jsp.setBounds(10, 10, 100, 100);c.add(jsp);JButton btn = new JButton("确认");btn.setBounds(120, 90, 70, 25);btn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根//获取列表框中选中的所有元素java.util.List<String> value = j1.getSelectedValuesList();for(String str: value){System.out.println(str);}System.out.println("------------------------");}});c.add(btn);setVisible(true);}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo11();}

文本框

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Demo12 extends JFrame
{public Demo12(){setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();c.setLayout(new FlowLayout());//null 为绝对布局   JTextField jt = new JTextField("aaa");//初始值jt.setColumns(20);//设置文本框的长度为20jt.setText("aaa");//设置文本jt.setFont(new Font("黑体",Font.BOLD,20));//设置字体格式JButton btn = new JButton("按钮");btn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根System.out.println("文本框中的值为:"+jt.getText());//获取文本框中的文本值jt.setText("");//清空文本框中的内容jt.requestFocus();//获取焦点 获取光标}});btn.setBounds(100, 100, 50, 50);c.add(btn);c.add(jt);setVisible(true);}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo12();}}

密码框

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Demo13 extends JFrame
{public Demo13(){setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();c.setLayout(new FlowLayout());//null 为绝对布局   JPasswordField jps = new JPasswordField();jps.setColumns(20);//设置密码框长度显示20字符jps.setFont(new Font("黑体",Font.BOLD,18));jps.setEchoChar('*');//设置回显字符c.add(jps);jps.addActionListener(new ActionListener() {@Override//回车动作监听public void actionPerformed(ActionEvent arg0) {// TODO 自动生成的方法存根char[] ch = jps.getPassword();String str = new String(ch);System.out.println("密码为:"+str);//获取密码的字符数组}});setVisible(true);}public static void main(String[] args) {new Demo13();}
}

文本域

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;import javax.swing.*;public class Demo14 extends JFrame
{public Demo14(){setBounds(300, 300, 400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();c.setLayout(new FlowLayout());JTextArea area = new JTextArea();area.setText("设置文本内容");area.setRows(5);//设定行area.setColumns(10);//设定列数
//      area.setText("添加内容");area.append("添加内容");area.insert("插入内容", 2);//在第二个字符后面插入内容area.setFont(new Font("黑体",Font.BOLD,20));JScrollPane js = new JScrollPane(area);//给文本域添加滚动条c.add(js);setVisible(true);}public static void main(String[] args){new Demo14();}
}

动作事件监听器

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class Demo15 extends JFrame
{public Demo15(){setBounds(100, 100, 500, 100);setDefaultCloseOperation(EXIT_ON_CLOSE);Container c = getContentPane();JPanel centerP = new JPanel();centerP.setLayout(new FlowLayout());c.add(centerP,BorderLayout.CENTER);JPanel southP = new JPanel();JLabel console = new JLabel("点击组件");southP.add(console);c.add(southP,BorderLayout.SOUTH);JButton btn = new JButton("按钮");centerP.add(btn);btn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {console.setText("您点击了按钮");}});JTextField jt = new JTextField(10);centerP.add(jt);jt.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Object obj = e.getSource();JTextField jtTmp = (JTextField)obj;System.out.println(jtTmp.getText());console.setText(jt.getText());}});JCheckBox jc = new JCheckBox("多选框");centerP.add(jc);jc.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {console.setText("多选框被点击");}});JRadioButton jr = new JRadioButton("单选框");centerP.add(jr);jr.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {console.setText("单选框被点击");}});String values[] = {"选项一","选项二","选项三"};JComboBox<String> jb = new JComboBox<String>(values);centerP.add(jb);jb.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根console.setText("下拉列表被选择");        }});setVisible(true);c.validate();      }public static void main(String[] args) {new Demo15();}
}

焦点监听器

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.security.GeneralSecurityException;import javax.swing.*;
import javax.swing.border.Border;public class Demo16 extends JFrame{public Demo16(){setTitle("这是一个窗口");setBounds(300,300,500,300);setDefaultCloseOperation(EXIT_ON_CLOSE);JPanel contentPane = new JPanel();setContentPane(contentPane);contentPane.setLayout(null);JTextField jt1 = new JTextField(10);//显示10个字符jt1.setBounds(10, 10, 66, 21);contentPane.add(jt1);JTextField jt2 = new JTextField(10);//显示10个字符jt2.setBounds(10, 41, 66, 21);contentPane.add(jt2);JTextField jt3 = new JTextField(10);//显示10个字符jt3.setBounds(10, 72, 66, 21);contentPane.add(jt3);JLabel lb1 = new JLabel();lb1.setBounds(86, 10, 66, 21);lb1.setText("未获取焦点");contentPane.add(lb1);JLabel lb2 = new JLabel();lb2.setBounds(86, 41, 66, 21);lb2.setText("未获取焦点");contentPane.add(lb2);JLabel lb3 = new JLabel();lb3.setBounds(86, 72, 66, 21);lb3.setText("未获取焦点");contentPane.add(lb3);//添加焦点监听事件/*       jt1.addFocusListener(new FocusListener() {public void focusLost(FocusEvent arg0) {// TODO 自动生成的方法存根lb1.setText("失去焦点");lb1.setForeground(Color.RED);}public void focusGained(FocusEvent arg0) {// TODO 自动生成的方法存根lb1.setText("");}});jt2.addFocusListener(new FocusListener() {public void focusLost(FocusEvent arg0) {// TODO 自动生成的方法存根lb2.setText("失去焦点");lb2.setForeground(Color.RED);}public void focusGained(FocusEvent arg0) {// TODO 自动生成的方法存根lb2.setText("");}});jt3.addFocusListener(new FocusListener() {public void focusLost(FocusEvent arg0) {// TODO 自动生成的方法存根lb3.setText("失去焦点");lb3.setForeground(Color.RED);}public void focusGained(FocusEvent arg0) {// TODO 自动生成的方法存根lb3.setText("");}});
*/  //      jt1.addFocusListener(new MyfocutListener());//使用自定义的监听实现类
//      jt2.addFocusListener(new MyfocutListener());//使用自定义的监听实现类
//      jt3.addFocusListener(new MyfocutListener());//使用自定义的监听实现类setVisible(true);}class MyfocutListener implements FocusListener//自定义焦点事件监听
{public void focusGained(FocusEvent e){JTextField tmp = (JTextField)e.getSource();//获取触发事件的组件tmp.setBorder(BorderFactory.createLineBorder(Color.GREEN));//给获取焦点的边框设置绿色边框   }public void focusLost(FocusEvent e) {JTextField tmp = (JTextField)e.getSource();//获取触发事件的组件tmp.setBorder(BorderFactory.createLineBorder(Color.RED));//给获取焦点的边框设置红色边框  }
}public static void main(String[] args) {// TODO 自动生成的方法存根new Demo16();}}

对于表格组件,参考添加链接描述

JAVA-Swing技术相关推荐

  1. java swing 技术简介,javaswing开发简介

    本文介绍了利用 Java3D技术并结 合 Sw ing技术实现的 3D组件开发 ,并以石油数值模拟软件中 的应用为例体现了该组件具有的优势 . 图 1 3D 组件设计流程图 明...... Java ...

  2. java实验常见错误_求高手点拨一个Java SWING的IM系统实验的错误解决方案。

    高手,您好: 小弟遇到的代码场景为: 制作了一个Java SWING技术结合Socket技术实现的IM通信实验. 通信为双向全双工通信,通信方分为S端和C端. 下面,小弟贴出小弟的全部实验源代码,请高 ...

  3. 俄罗斯方块游戏开发 ——图形化编程java swing 项目

    通过java swing技术开发的俄罗斯方块游戏,实现了基础的游戏绘制.移动逻辑.消除逻辑.得分统计.死亡判定.预测方块等功能. 成果展示截图: 项目源码及 可执行文件jar 下载 : https:/ ...

  4. java 抽奖系统_【小型系统】抽奖系统-使用Java Swing完成

    一.需求分析 1. 显示候选人照片和姓名. 2. 可以使用多种模式进行抽奖,包括一人单独抽奖.两人同时抽奖.三人同时抽奖. 3. 一个人可以在不同的批次的抽奖中获取一.二.三等奖,但是不能在同一批次抽 ...

  5. Java + Swing + MySQL实现图书管理系统

    项目:图书管理系统开发 图书管理系统会因为图书的数量.种类.提供的操作等不同而具有不同的复杂度.基本信息的维护.图书借阅.归还及查询等操作通常是图书管理系统的基本功能.在规模较大.业务较多的图书馆还需 ...

  6. java swing 组件技术(上)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次写自己的博客,明知道写得很水,还是努力去写了,希望踏出第一步之后,能有着更好的发展.这几天看了一些资料,总结了一下自己所 ...

  7. 必学技术java Swing之随心所欲添加自定义位置和大小的组件(建议收藏)

    必学技术java Swing之随心所欲添加自定义位置和大小的组件 首先展示一下一般的添加组件方法,以按钮为例(这里采用流式布局) package pure_Swing;import javax.swi ...

  8. 必学技术Java Swing之改变咖啡默认图标(建议收藏)

    Java Swing之改变咖啡默认图标 引言:在这里我展示一下改变默认咖啡图标的代码,具体步骤我一一列出来了,有什么疑问的可以联系我哦.(编程软件是Intellij idea) 注:这里介绍一下ide ...

  9. java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能

    原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...

  10. 超市管理系统java swing+mysql报告_基于java+swing+mysql的超市管理系统

    运行环境:java jdk 1.8 IDE环境:Eclipse,Myeclipse,IDEA都可以 硬件环境:windows 7/8/10 2G内存以上(推荐4G,4G以上更好) 可以实现: 销售管理 ...

最新文章

  1. linux 6.4 图形界面,为CentOS 6.4安装图形界面并用VNC远程连接
  2. codefores 786B. Legacy(最短路,线段树优化拆点,好题)
  3. 应用程序框架实战二十一:DDD分层架构之仓储(介绍篇)
  4. html HTML1300 进行了导航,jquery根据文章H标签自动生成导航目录
  5. Jmeter Beanshell采样器调用JAVA方法(二)
  6. CF(437C)The Child and Toy(馋)
  7. Java内部类手机专卖店_Java:内部类
  8. 电子计算机工作的特征是什么,电子计算机的基本特征是什么?
  9. 一步一步搭建hibernate4+ spring+ struts2
  10. 学有小成-php基础语法-06
  11. Android WebRTC 音视频开发总结
  12. 水系图一般在哪里找得到_广东工业大学《JACS》:一种全新的高性能水系可充电铝离子电池!...
  13. 谷歌浏览器如何安装插件-以octotree为例
  14. Centos yum 包管理工具离线安装
  15. 宝塔linux 解压文件,宝塔面板能否解压缩文件
  16. 麦克阿瑟奖得主Dawn Song:区块链能保密和保护隐私?图样图森破!
  17. MySQL数素数_素数个数-欧拉筛法
  18. 爱签:如何在线签订电子合同
  19. 互补品的需求曲线图_如图,D是某商品的需求曲线,当该商品的互补品价格下降时,则该商品的需求曲线会出现移动。下列各图(横轴为需求量,纵轴为价格)能够正确反映这一变化的是...
  20. NTKO OFFICE文档控件为何不能自动装载?

热门文章

  1. 钙钛矿在太阳能电池领域的研究进展
  2. 如何微调Segment Anything Model
  3. Permission denied: user=dr.who, access=WRITE, inode=“/“:root:supergroup:drwxr-xr-x
  4. Ruby最全系列原版书籍下载 下载 download
  5. IDL编译器系列-入门篇
  6. java的web项目分工_JavaWeb中Servlet和JSP的分工案例
  7. win8.1 如何查看com端口号
  8. 【转载】世界十大名咖啡
  9. 森林救火与计算机相关,无人机森林防火解决方案包含了哪些技术?
  10. Elasticsearch集群部署1.0