本文共 5073 字,大约阅读时间需要 16 分钟。
继续上一篇博客,博客地址在这:
接下来根据功能演示如何开发一个一个的Panel MainPanel 是主窗体的ContentPanel,采用的是BorderLayerout的布局方式。 北边是一个工具条 中间是一个空白的Panel,用于将来显示不同的功能面板 代码如下:package gui.panel;import util.CenterPanel;import util.GUIUtil;import javax.swing.*;import java.awt.*;import java.security.Guard;public class MainPanel extends JPanel { //这里需要设置水晶皮肤,而且是需要放在最前面才能生效的 static { GUIUtil.useLNF(); } //如果是采用单例模式 public static MainPanel instance=new MainPanel(); //再把各个按钮声明为public属性 public JToolBar tb=new JToolBar(); public JButton bSpend=new JButton(); public JButton bRecord=new JButton(); public JButton bCategory=new JButton(); public JButton bReport=new JButton(); public JButton bConfig=new JButton(); public JButton bBackup=new JButton(); public JButton bRecover=new JButton(); public CenterPanel workingPanel; private MainPanel(){ //setImageIcon这个方法 是给按钮设置图标和文本以及提示文字 //有下面三个参数 JButton b, String fileName, String tip GUIUtil.setImageIcon(bSpend,"home.png","消费一览"); GUIUtil.setImageIcon(bRecord,"record.png","记一笔"); GUIUtil.setImageIcon(bCategory,"category2.png","消费分类"); GUIUtil.setImageIcon(bReport,"report.png","月消费报表"); GUIUtil.setImageIcon(bConfig,"config.png","设置"); GUIUtil.setImageIcon(bBackup,"backup.png","备份"); GUIUtil.setImageIcon(bRecover,"restore.png","恢复"); tb.add(bSpend); tb.add(bRecord); tb.add(bCategory); tb.add(bReport); tb.add(bConfig); tb.add(bBackup); tb.add(bRecover); //也就是设置不能浮动 tb.setFloatable(false); //this(rate, true);也就是默认是true的 workingPanel=new CenterPanel(0.8); setLayout(new BorderLayout()); //在对位置进行设置 add(tb,BorderLayout.NORTH); add(workingPanel,BorderLayout.CENTER); } public static void main(String[] args) { //两个参数 GUIUtil.showPanel(MainPanel.instance,1); }}
运行结果如下:
接下来是花费的这个画板类SpendPanelpackage gui.panel;import com.objectplanet.chart.JpegEncoder;import util.CircleProgressBar;import util.ColorUtil;import util.GUIUtil;import javax.swing.*;import java.awt.*;public class SpendPanel extends JPanel { //首先还是先对皮肤进行设定 static { GUIUtil.useLNF(); } //这里就是创建一个对象 为什么可以直接getInstance //是因为 他是instance吗, 我等下改成别的试试看 public static SpendPanel instance=new SpendPanel(); //JLabel 就是一个可以显示图像和文本的标签 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(){ //构造函数 new一个布局管理器 this.setLayout(new BorderLayout()); //这个是之前工具栏 bar=new CircleProgressBar(); //这个也是直接调用的背景颜色 bar.setBackgroundColor(ColorUtil.blueColor); GUIUtil.setColor(ColorUtil.garyColor,lMonthSpend,lTodaySpend,lAvgSpendPerDay,lMonthLeft,lDayAvgAvailable,lMonthLeftDay,vAvgSpendPerDay,vMonthAvailable,vDayAvgAvailable,vMonthLeftDay); GUIUtil.setColor(ColorUtil.blueColor,vMonthSpend,vTodaySpend); //setFont还有这个字体设计 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(); //通过新建一个BorderLayout 来设置layout p.setLayout(new BorderLayout()); //在center的基础之上,设置west和他对应的center p.add(west(),BorderLayout.WEST); p.add(center2(),BorderLayout.CENTER); return p; } //没想到这个center2就是返回一个bar private Component center2(){ //就是上面的这个CircleProgressBar bar // minimumProgress = 0; // maximumProgress = 100; // progressText = "0%"; 这个是构造函数里的参数 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); }}
结果显示:
转载地址:http://fsfen.baihongyu.com/