how2j.cn

相关下载
文件名 文件大小
shana.png 27k

工具版本兼容问题
JAVA的图形界面下有两组控件,一组是awt,一组是swing。
一般都是使用swing

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



12分2秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



关键字 简介 示例代码
JLabel
标签
示例代码
setIcon
使用JLabel显示图片
示例代码
JButton
按钮
示例代码
JCheckBox
复选框
示例代码
JRadioButton
单选框
示例代码
ButtonGroup
按钮组
示例代码
JComboBox
下拉框
示例代码
JOptionPane
对话框
示例代码
JTextField
文本框
示例代码
JPasswordField
密码框
示例代码
JTextArea
文本域
示例代码
JProgressBar
进度条
示例代码
JFileChooser
文件选择器
示例代码
示例 1 : 标签   
示例 2 : 使用JLabel显示图片   
示例 3 : 按钮   
示例 4 : 复选框   
示例 5 : 单选框   
示例 6 : 按钮组   
示例 7 : 下拉框   
示例 8 : 对话框   
示例 9 : 文本框   
示例 10 : 密码框   
示例 11 : 文本域   
示例 12 : 进度条   
示例 13 : 文件选择器   

示例 1 :

标签

Label用于显示文字
标签
package gui; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JLabel; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); JLabel l = new JLabel("LOL文字"); //文字颜色 l.setForeground(Color.red); l.setBounds(50, 50, 280, 30); f.add(l); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 2 :

使用JLabel显示图片

java GUI 显示图片是通过在label上设置图标实现的
注: 这里的图片路径是e:/project/j2se/shana.png,所以要确保这里有图片,不然不会显示
注: 图片的后缀名和真实格式,必须保持一致,否则很有可能无法正常显示。 什么意思呢?就是文件本来是jpg的,但是仅仅是把后缀名修改成了png,那么会导致显示失败。
使用JLabel显示图片
package gui; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(580, 200); f.setLayout(null); JLabel l = new JLabel(); //根据图片创建ImageIcon对象 ImageIcon i = new ImageIcon("e:/project/j2se/shana.png"); //设置ImageIcon l.setIcon(i); //label的大小设置为ImageIcon,否则显示不完整 l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight()); f.add(l); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 3 :

按钮

JButton 普通按钮
按钮
package gui; import javax.swing.JButton; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); JButton b = new JButton("一键秒对方基地挂"); b.setBounds(50, 50, 280, 30); f.add(b); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 4 :

复选框

JCheckBox 复选框

使用isSelected来获取是否选中了
复选框
package gui; import javax.swing.JCheckBox; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(580, 200); f.setLayout(null); JCheckBox bCheckBox = new JCheckBox("物理英雄"); //设置 为 默认被选中 bCheckBox.setSelected(true); bCheckBox.setBounds(50, 50, 130, 30); JCheckBox bCheckBox2 = new JCheckBox("魔法 英雄"); bCheckBox2.setBounds(50, 100, 130, 30); //判断 是否 被 选中 System.out.println(bCheckBox2.isSelected()); f.add(bCheckBox); f.add(bCheckBox2); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 5 :

单选框

JRadioButton 单选框
使用isSelected来获取是否选中了

在这个例子里,两个单选框可以被同时选中,为了实现只能选中一个,还需要用到ButtonGroup
单选框
package gui; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JRadioButton; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(580, 200); f.setLayout(null); JRadioButton b1 = new JRadioButton("物理英雄"); // 设置 为 默认被选中 b1.setSelected(true); b1.setBounds(50, 50, 130, 30); JRadioButton b2 = new JRadioButton("魔法 英雄"); b2.setBounds(50, 100, 130, 30); System.out.println(b2.isSelected()); f.add(b1); f.add(b2); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 6 :

按钮组

ButtonGroup 对按钮进行分组,把不同的按钮,放在同一个分组里 ,同一时间,只有一个 按钮 会被选中
按钮组
package gui; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JRadioButton; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(580, 240); f.setLayout(null); JRadioButton b1 = new JRadioButton("物理英雄"); b1.setSelected(true); b1.setBounds(50, 50, 130, 30); JRadioButton b2 = new JRadioButton("魔法 英雄"); b2.setBounds(50, 100, 130, 30); // 按钮分组 ButtonGroup bg = new ButtonGroup(); // 把b1,b2放在 同一个 按钮分组对象里 ,这样同一时间,只有一个 按钮 会被选中 bg.add(b1); bg.add(b2); f.add(b1); f.add(b2); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 7 :

下拉框

JComboBox 下拉框
使用getSelectedItem来获取被选中项
使用setSelectedItem() 来指定要选中项
下拉框
package gui; import javax.swing.JComboBox; import javax.swing.JFrame; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(580, 240); f.setLayout(null); //下拉框出现的条目 String[] heros = new String[] { "卡特琳娜", "库奇" }; JComboBox cb = new JComboBox(heros); cb.setBounds(50, 50, 80, 30); f.add(cb); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 8 :

对话框

JOptionPane 用于弹出对话框

JOptionPane.showConfirmDialog(f, "是否 使用外挂 ?");
表示询问,第一个参数是该对话框以哪个组件对齐
JOptionPane.showInputDialog(f, "请输入yes,表明使用外挂后果自负");
接受用户的输入
JOptionPane.showMessageDialog(f, "你使用外挂被抓住! 罚拣肥皂3次!");
显示消息
对话框
package gui; import javax.swing.JFrame; import javax.swing.JOptionPane; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(580, 240); f.setLayout(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); int option = JOptionPane.showConfirmDialog(f, "是否 使用外挂 ?"); if (JOptionPane.OK_OPTION == option) { String answer = JOptionPane.showInputDialog(f, "请输入yes,表明使用外挂后果自负"); if ("yes".equals(answer)) JOptionPane.showMessageDialog(f, "你使用外挂被抓住! 罚拣肥皂3次!"); } } }
示例 9 :

文本框

JTextField 输入框
setText 设置文本
getText 获取文本
JTextField 是单行文本框,如果要输入多行数据,请使用JTextArea

tfPassword.grabFocus(); 表示让密码输入框获取焦点
文本框
package gui; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new FlowLayout()); JLabel lName = new JLabel("账号:"); // 输入框 JTextField tfName = new JTextField(""); tfName.setText("请输入账号"); tfName.setPreferredSize(new Dimension(80, 30)); JLabel lPassword = new JLabel("密码:"); // 输入框 JTextField tfPassword = new JTextField(""); tfPassword.setText("请输入密码"); tfPassword.setPreferredSize(new Dimension(80, 30)); f.add(lName); f.add(tfName); f.add(lPassword); f.add(tfPassword); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); tfPassword.grabFocus(); } }
示例 10 :

密码框

JPasswordField 密码框
与文本框不同,获取密码框里的内容,推荐使用getPassword,该方法会返回一个字符数组,而非字符串
密码框
package gui; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new FlowLayout()); JLabel l = new JLabel("密码:"); // 密码框 JPasswordField pf = new JPasswordField(""); pf.setText("&48kdh4@#"); pf.setPreferredSize(new Dimension(80, 30)); // 与文本框不同,获取密码框里的内容,推荐使用getPassword,该方法会返回一个字符数组,而非字符串 char[] password = pf.getPassword(); String p = String.valueOf(password); System.out.println(p); f.add(l); f.add(pf); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 11 :

文本域

JTextArea:文本域。
文本框JTextField不同的是,文本域可以输入多行数据
如果要给文本域初始文本,通过\n来实现换行效果
JTextArea通常会用到append来进行数据追加
如果文本太长,会跑出去,可以通过setLineWrap(true) 来做到自动换行
文本域
package gui; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new FlowLayout()); JLabel l = new JLabel("文本域:"); JTextArea ta = new JTextArea(); ta.setPreferredSize(new Dimension(200, 150)); //\n换行符 ta.setText("抢人头!\n抢你妹啊抢!\n"); //追加数据 ta.append("我去送了了了了了了了了了了了了了了了了了了了了了了了了"); //设置自动换行 ta.setLineWrap(true); f.add(l); f.add(ta); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 12 :

进度条

进度条
package gui; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import javax.swing.JTextArea; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new FlowLayout()); JProgressBar pb = new JProgressBar(); //进度条最大100 pb.setMaximum(100); //当前进度是50 pb.setValue(50); //显示当前进度 pb.setStringPainted(true); f.add(pb); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
示例 13 :

文件选择器

JFileChooser 表示文件选择器
使用FileFilter用于仅选择.txt文件

fc.setFileFilter(new FileFilter() {
public String getDescription() {
return ".txt";
}
public boolean accept(File f) {
return f.getName().toLowerCase().endsWith(".txt");
}
});


fc.showOpenDialog(); 用于打开文件
fc.showSaveDialog(); 用于保存文件
文件选择器
package gui; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LOL"); f.setLayout(new FlowLayout()); JFileChooser fc = new JFileChooser(); fc.setFileFilter(new FileFilter() { @Override public String getDescription() { // TODO Auto-generated method stub return ".txt"; } @Override public boolean accept(File f) { return f.getName().toLowerCase().endsWith(".txt"); } }); JButton bOpen = new JButton("打开文件"); JButton bSave = new JButton("保存文件"); f.add(bOpen); f.add(bSave); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(250, 150); f.setLocationRelativeTo(null); f.setVisible(true); bOpen.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int returnVal = fc.showOpenDialog(f); File file = fc.getSelectedFile(); if (returnVal == JFileChooser.APPROVE_OPTION) { JOptionPane.showMessageDialog(f, "计划打开文件:" + file.getAbsolutePath()); } } }); bSave.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int returnVal = fc.showSaveDialog(f); File file = fc.getSelectedFile(); if (returnVal == JFileChooser.APPROVE_OPTION) { JOptionPane.showMessageDialog(f, "计划保存到文件:" + file.getAbsolutePath()); } } }); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-08-14 图形界面乱码
一生一世1314



求助!!!图形界面乱码!!!参照网上的方法都做了,在Preference里修改成GBK,在Argument里添加-Dfile.encoding=GB18030 ,或者写成-Dfile.encoding=GBK,这些我都试了,还是不行?

							

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-06-09 读条问题
基督山没有伯爵
怎么设置进度条从0--100读条啊,是不是涉及到线程啊




1 个答案

基督山没有伯爵 答案时间:2018-06-09
好了




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-06-30 我想加个判断语句然后弹窗,但是代码运行老是没反应
2017-06-26 设置位置和大小的时候,这两种方法有没有区别




提问之前请登陆
关于 JAVA 中级-图形界面-组件 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图