how2j.cn

下载区
文件名 文件大小
请先登录 546k
增值内容 546k
546k
使用站长秘制下载工具

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

步骤 1 : 先看效果   
步骤 2 : 布局分析-整体   
步骤 3 : 布局分析-南面   
步骤 4 : 布局分析-北面   
步骤 5 : SpendPanel 消费一览面板代码讲解   

先看效果
步骤 2 :

布局分析-整体

edit
首先把整体是一个BorderLayerout
中间是一个Panel,采用的BorderLayerout.CENTER
下面也是一个Panel,采用的BorderLayerout.SOUTH


this.add(center(), BorderLayout.CENTER);
this.add(south(), BorderLayout.SOUTH);
布局分析-整体
步骤 3 :

布局分析-南面

edit
南面这部分使用的是GridLayerout,采用的是2行4列的网格布局器

private JPanel south() {
JPanel p = new JPanel();
p.setLayout(new GridLayout(2, 4));

p.add(lAvgSpendPerDay);
p.add(lMonthLeft);
p.add(lDayAvgAvailable);
p.add(lMonthLeftDay);
p.add(vAvgSpendPerDay);
p.add(vMonthAvailable);
p.add(vDayAvgAvailable);
p.add(vMonthLeftDay);

return p;
}
布局分析-南面
步骤 4 :

布局分析-北面

edit
北面这个Panel,本身也是用的BorderLayout
其自身分中西两部分
CENTER就直接使用的环形进度条
WEST 使用的是一个JPanel,这个JPanel用的是4行1列的GridLayout


private JPanel center() {
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(west(), BorderLayout.WEST);
p.add(center2(),BorderLayout.CENTER);

return p;
}
布局分析-北面
步骤 5 :

SpendPanel 消费一览面板代码讲解

edit
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package gui.panel; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Font; import java.awt.GridLayout; import javax.swing.JLabel; import javax.swing.JPanel; import util.CircleProgressBar; import util.ColorUtil; import util.GUIUtil; public class SpendPanel extends JPanel{ static{ GUIUtil.useLNF(); } public static SpendPanel instance = new SpendPanel(); public JLabel lMonthSpend = new JLabel("本月消费"); public JLabel lTodaySpend = new JLabel("今日消费"); public JLabel lAvgSpendPerDay = new JLabel("日均消费"); public JLabel lMonthLeft = new JLabel("本月剩余"); public JLabel lDayAvgAvailable = new JLabel("日均可用"); public JLabel lMonthLeftDay = new JLabel("距离月末"); public JLabel vMonthSpend = new JLabel("¥2300"); public JLabel vTodaySpend = new JLabel("¥25"); public JLabel vAvgSpendPerDay = new JLabel("¥120"); public JLabel vMonthAvailable = new JLabel("¥2084"); public JLabel vDayAvgAvailable = new JLabel("¥389"); public JLabel vMonthLeftDay = new JLabel("15天"); CircleProgressBar bar; public SpendPanel() { this.setLayout(new BorderLayout()); bar = new CircleProgressBar(); bar.setBackgroundColor(ColorUtil.blueColor); GUIUtil.setColor(ColorUtil.grayColor, lMonthSpend, lTodaySpend, lAvgSpendPerDay, lMonthLeft, lDayAvgAvailable, lMonthLeftDay, vAvgSpendPerDay, vMonthAvailable, vDayAvgAvailable, vMonthLeftDay); GUIUtil.setColor(ColorUtil.blueColor, vMonthSpend, vTodaySpend); vMonthSpend.setFont(new Font("微软雅黑", Font.BOLD, 23)); vTodaySpend.setFont(new Font("微软雅黑", Font.BOLD, 23)); this.add(center(), BorderLayout.CENTER); this.add(south(), BorderLayout.SOUTH); } private JPanel center() { JPanel p = new JPanel(); p.setLayout(new BorderLayout()); p.add(west(), BorderLayout.WEST); p.add(center2(),BorderLayout.CENTER); return p; } private Component center2() { return bar; } private Component west() { JPanel p = new JPanel(); p.setLayout(new GridLayout(4, 1)); p.add(lMonthSpend); p.add(vMonthSpend); p.add(lTodaySpend); p.add(vTodaySpend); return p; } private JPanel south() { JPanel p = new JPanel(); p.setLayout(new GridLayout(2, 4)); p.add(lAvgSpendPerDay); p.add(lMonthLeft); p.add(lDayAvgAvailable); p.add(lMonthLeftDay); p.add(vAvgSpendPerDay); p.add(vMonthAvailable); p.add(vDayAvgAvailable); p.add(vMonthLeftDay); return p; } public static void main(String[] args) { GUIUtil.showPanel(SpendPanel.instance); } }


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


问答区域    
2021-08-04 不是说单例吗,为什么它构造方法公有
2078918033hjg

不是说单例吗,为什么它构造方法公有




1 个答案

how2j
答案时间:2021-08-21
本质是利用 静态属性的唯一性来建立单例效果,与构造方法无关。



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




2020-10-08 bar显示的颜色异常
Rigo




按照站长的教程,最终得到的bar应该是蓝色的,可是我相同的代码,得到的bar却是黑色的,这是为什么呢?明明bar.setBackground(ColorUtil.blueColor);这里设置的是蓝色
加载中
public SpendPanle() {
    	this.setLayout(new BorderLayout());
    	bar = new CircleProgressBar();
    	bar.setBackground(ColorUtil.blueColor);
    	
    	GUIUtil.setColor(ColorUtil.grayColor, lMonthSpend, lTodaySpend, lAvgSpendPerDay, lMonthLeft, lDayAvgAvailable,
                lMonthLeftDay, vAvgSpendPerDay, vMonthAvailable, vDayAvgAvailable, vMonthLeftDay);
    	GUIUtil.setColor(ColorUtil.blueColor, vMonthSpend, vTodaySpend);
    	
    	vMonthSpend.setFont(new Font("微软雅黑", Font.BOLD, 23));
        vTodaySpend.setFont(new Font("微软雅黑", Font.BOLD, 23));
        
        this.add(center(), BorderLayout.CENTER);
        this.add(south(), BorderLayout.SOUTH);
    }

							


3 个答案

woa115205
答案时间:2021-11-21
因为你的是setBackgound()而不是setBackgroundColor()

yun_5
答案时间:2021-04-06
我也出现跟你一样的问题。可以反过来推理,没有颜色可能是 ColorUtil.blueColor 定义不一样,所以我不用这个方法,直接 new 一个Color值给进 setBackgroundColor 方法,然后还是黑色,说明不是颜色定义问题(如果变色了就是ColorUtil类里方法没写好)而是因为 CircleProgressBar 里的 get/setBackgroundColor 方法没有正确执行,所以就去那个类里面检查 get/setBackgroundColor 方法.然后我就发现是粗心写错了.

how2j
答案时间:2020-10-15
你的 ColorUtil.blueColor 是否和我的定义不一样呢?



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





2020-02-18 一个错误:A Java Exception has occurred
2019-10-30 CircleProgresBar
2019-06-21 我天哪 ,为啥顺序还不一样了?还有我的环形进度条咋少了点??


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

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

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

上传截图