how2j.cn

下载区
文件名 文件大小
请先登录 335k
增值内容 335k
335k
请先登录 365k
增值内容 365k
365k

工具版本兼容问题
在开发图形界面的过程中,有很多功能在各个地方都会用到,并且重复使用的概率比较高。 比如判断一个输入框是否是数字,是否是空,是否为0等等类似的,所以把这些使用比较普遍的功能,抽象到一个工具类里。 这样以后再用的时候,就直接调用就可以了,而不需要每次都单独再写一遍。

这样可以节约开发时间,提高效率,降低维护成本,代码看上去也更加简洁。



6分29秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器

步骤 1 : GUIUtil   
步骤 2 : checkEmpty   
步骤 3 : checkNumber   
步骤 4 : checkZero   
步骤 5 : setColor   
步骤 6 : setImageIcon   
步骤 7 : useLNF   
步骤 8 : showPanel   

工具类的名字,往往都会以Util结尾,Util是Utility的缩写,Utility是工具的意思。

GUIUtil就表示专门用在图形界面上的工具类

下面是整个类的代码,后续会把每个方法拿出来讲解
package util; import java.awt.Color; import java.awt.Dimension; import java.io.File; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class GUIUtil { private static String imageFolder = "e:/project/hutubill/img"; public static void setImageIcon(JButton b, String fileName, String tip) { ImageIcon i = new ImageIcon(new File(imageFolder, fileName).getAbsolutePath()); b.setIcon(i); b.setPreferredSize(new Dimension(61, 81)); b.setToolTipText(tip); b.setVerticalTextPosition(JButton.BOTTOM); b.setHorizontalTextPosition(JButton.CENTER); b.setText(tip); } public static void setColor(Color color, JComponent... cs) { for (JComponent c : cs) { c.setForeground(color); } } /** * * @param p * @param strechRate 拉伸比例1表示满屏幕 */ public static void showPanel(JPanel p,double strechRate) { GUIUtil.useLNF(); JFrame f = new JFrame(); f.setSize(500, 500); f.setLocationRelativeTo(null); CenterPanel cp = new CenterPanel(strechRate); f.setContentPane(cp); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); cp.show(p); } public static void showPanel(JPanel p) { showPanel(p,0.85); } public static boolean checkNumber(JTextField tf, String input) { if (!checkEmpty(tf, input)) return false; String text = tf.getText().trim(); try { Integer.parseInt(text); return true; } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(null, input + " 需要是整数"); tf.grabFocus(); return false; } } public static boolean checkZero(JTextField tf, String input) { if (!checkNumber(tf, input)) return false; String text = tf.getText().trim(); if (0 == Integer.parseInt(text)) { JOptionPane.showMessageDialog(null, input + " 不能为零"); tf.grabFocus(); return false; } return true; } public static boolean checkEmpty(JTextField tf, String input) { String text = tf.getText().trim(); if (0 == text.length()) { JOptionPane.showMessageDialog(null, input + " 不能为空"); tf.grabFocus(); return false; } return true; } public static int getInt(JTextField tf) { return Integer.parseInt(tf.getText()); } public static void useLNF() { try { javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
public static boolean checkEmpty(JTextField tf, String input) { String text = tf.getText().trim(); if (0 == text.length()) { JOptionPane.showMessageDialog(null, input + " 不能为空"); tf.grabFocus(); return false; } return true; }
	public static boolean checkEmpty(JTextField tf, String input) {
		String text = tf.getText().trim();
		if (0 == text.length()) {
			JOptionPane.showMessageDialog(null, input + " 不能为空");
			tf.grabFocus();
			return false;
		}
		return true;

	}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
public static boolean checkNumber(JTextField tf, String input) { if (!checkEmpty(tf, input)) return false; String text = tf.getText().trim(); try { Integer.parseInt(text); return true; } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(null, input + " 需要是整数"); tf.grabFocus(); return false; } }
	public static boolean checkNumber(JTextField tf, String input) {
		if (!checkEmpty(tf, input))
			return false;
		String text = tf.getText().trim();
		try {
			Integer.parseInt(text);
			return true;
		} catch (NumberFormatException e1) {
			JOptionPane.showMessageDialog(null, input + " 需要是整数");
			tf.grabFocus();
			return false;
		}
	}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
public static boolean checkZero(JTextField tf, String input) { if (!checkNumber(tf, input)) return false; String text = tf.getText().trim(); if(0==Integer.parseInt(text)){ JOptionPane.showMessageDialog(null, input + " 不能为零"); tf.grabFocus(); return false; } return true; }
	public static boolean checkZero(JTextField tf, String input) {
		if (!checkNumber(tf, input))
			return false;
		String text = tf.getText().trim();

		if(0==Integer.parseInt(text)){
			JOptionPane.showMessageDialog(null, input + " 不能为零");
			tf.grabFocus();
			return false;
		}
		return true;

	}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
public static void setColor(Color color, JComponent... cs) { for (JComponent c : cs) { c.setForeground(color); } }
	public static void setColor(Color color, JComponent... cs) {
		for (JComponent c : cs) {
			c.setForeground(color);
		}
	}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
public static void setImageIcon(JButton b, String fileName, String tip) { ImageIcon i = new ImageIcon(new File(imageFolder, fileName).getAbsolutePath()); b.setIcon(i); b.setPreferredSize(new Dimension(61, 81)); b.setToolTipText(tip); b.setVerticalTextPosition(JButton.BOTTOM); b.setHorizontalTextPosition(JButton.CENTER); b.setText(tip); }
	public static void setImageIcon(JButton b, String fileName, String tip) {
		ImageIcon i = new ImageIcon(new File(imageFolder, fileName).getAbsolutePath());
		b.setIcon(i);
		b.setPreferredSize(new Dimension(61, 81));
		b.setToolTipText(tip);
		b.setVerticalTextPosition(JButton.BOTTOM);
		b.setHorizontalTextPosition(JButton.CENTER);
		b.setText(tip);
	}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
useLNF
public static void useLNF() { try { javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
	public static void useLNF() {
		try {
			javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
showPanel
/** * * @param p * @param strech 拉伸比例1表示满屏幕 */ public static void showPanel(JPanel p,double strech) { GUIUtil.useLNF(); JFrame f = new JFrame(); f.setSize(500, 500); f.setLocationRelativeTo(null); CenterPanel cp = new CenterPanel(strech); f.setContentPane(cp); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); cp.show(p); } public static void showPanel(JPanel p) { showPanel(p,0.85); }
package test; import javax.swing.JButton; import javax.swing.JPanel; import util.GUIUtil; public class Test { public static void main(String[] args) { GUIUtil.useLNF(); JPanel p = new JPanel(); p.add(new JButton("按钮1")); p.add(new JButton("按钮2")); GUIUtil.showPanel(p); } }


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


问答区域    
2022-04-07 运行报错,但可以出来图像
fql




运行报错,但可以出来图像
package test;

import javax.swing.JButton;
import javax.swing.JPanel;

import util.GUIUtil;

public class Test {
	
	public static void main(String[] args) {
		GUIUtil.useLNF();
		JPanel p = new JPanel();
		p.add(new JButton("按钮1"));
		p.add(new JButton("按钮2"));
		GUIUtil.showPanel(p);
	}
}
java.lang.ClassNotFoundException: com.birosoft.liquid.LiquidLookAndFeel
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at javax.swing.SwingUtilities.loadSystemClass(SwingUtilities.java:1879)
	at javax.swing.UIManager.setLookAndFeel(UIManager.java:582)
	at util.GUIUtil.useLNF(GUIUtil.java:99)
	at test.Test.main(Test.java:11)
java.lang.ClassNotFoundException: com.birosoft.liquid.LiquidLookAndFeel
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at javax.swing.SwingUtilities.loadSystemClass(SwingUtilities.java:1879)
	at javax.swing.UIManager.setLookAndFeel(UIManager.java:582)
	at util.GUIUtil.useLNF(GUIUtil.java:99)
	at util.GUIUtil.showPanel(GUIUtil.java:40)
	at util.GUIUtil.showPanel(GUIUtil.java:52)
	at test.Test.main(Test.java:15)


1 个答案

how2j
答案时间:2022-05-02
步骤7 加皮肤的包的动作你没有做。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-08-02 站长我想问下这个加了!之后不就反了嘛?不太理解这儿的意思
052878st




站长我想问下这个加了!之后不就反了嘛?不太理解这儿的意思
if (!checkEmpty(tf, input))

							


1 个答案

境界唯式
答案时间:2021-08-03
如果是空的,checkEmpty为false,加上!,就是true,则就是如果为空,接下来。。。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-07-06 乱码了要怎么设置
2021-05-20 这个new File(imageFolder, fileName),imageFolder什么意思
2021-03-31 public static void setColor(Color color, JComponent... cs) 中...怎么用呢


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 28 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-一本糊涂账-GUIUtil 的提问

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

上传截图