步骤 1 : 共同性 步骤 2 : WorkingPanel 步骤 3 : 让CategoryPanel继承WorkingPanel 步骤 4 : 让ConfigPanel继承WorkingPanel 步骤 5 : ToolBarListener监听器的不完善 步骤 6 : 改进CenterPanel 步骤 7 : 点击设置按钮
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package gui.panel;
import javax.swing.JPanel;
public abstract class WorkingPanel extends JPanel{
public abstract void updateData();
public abstract void addListener();
}
package gui.panel; import javax.swing.JPanel; public abstract class WorkingPanel extends JPanel{ public abstract void updateData(); public abstract void addListener(); }
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package gui.panel;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import entity.Category;
import gui.listener.CategoryListener;
import gui.model.CategoryTableModel;
import service.CategoryService;
import util.ColorUtil;
import util.GUIUtil;
public class CategoryPanel extends WorkingPanel {
static {
GUIUtil.useLNF();
}
public static CategoryPanel instance = new CategoryPanel();
public JButton bAdd = new JButton("新增");
public JButton bEdit = new JButton("编辑");
public JButton bDelete = new JButton("删除");
String columNames[] = new String[] { "分类名称", "消费次数" };
public CategoryTableModel ctm = new CategoryTableModel();
public JTable t = new JTable(ctm);
public CategoryPanel() {
GUIUtil.setColor(ColorUtil.blueColor, bAdd, bEdit, bDelete);
JScrollPane sp = new JScrollPane(t);
JPanel pSubmit = new JPanel();
pSubmit.add(bAdd);
pSubmit.add(bEdit);
pSubmit.add(bDelete);
this.setLayout(new BorderLayout());
this.add(sp, BorderLayout.CENTER);
this.add(pSubmit, BorderLayout.SOUTH);
addListener();
}
public static void main(String[] args) {
GUIUtil.showPanel(CategoryPanel.instance);
}
public Category getSelectedCategory() {
int index = t.getSelectedRow();
return ctm.cs.get(index);
}
public void updateData() {
ctm.cs = new CategoryService().list();
t.updateUI();
t.getSelectionModel().setSelectionInterval(0, 0);
if(0==ctm.cs.size()){
bEdit.setEnabled(false);
bDelete.setEnabled(false);
}
else{
bEdit.setEnabled(true);
bDelete.setEnabled(true);
}
}
public void addListener() {
CategoryListener listener = new CategoryListener();
bAdd.addActionListener(listener);
bEdit.addActionListener(listener);
bDelete.addActionListener(listener);
}
}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package gui.panel;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import gui.listener.ConfigListener;
import service.ConfigService;
import util.ColorUtil;
import util.GUIUtil;
public class ConfigPanel extends WorkingPanel {
static {
GUIUtil.useLNF();
}
public static ConfigPanel instance = new ConfigPanel();
JLabel lBudget = new JLabel("本月预算(¥)");
public JTextField tfBudget = new JTextField("0");
JLabel lMysql = new JLabel("Mysql安装目录");
public JTextField tfMysqlPath = new JTextField("");
JButton bSubmit = new JButton("更新");
public ConfigPanel() {
GUIUtil.setColor(ColorUtil.grayColor, lBudget, lMysql);
GUIUtil.setColor(ColorUtil.blueColor, bSubmit);
JPanel pInput = new JPanel();
JPanel pSubmit = new JPanel();
int gap = 40;
pInput.setLayout(new GridLayout(4, 1, gap, gap));
pInput.add(lBudget);
pInput.add(tfBudget);
pInput.add(lMysql);
pInput.add(tfMysqlPath);
pSubmit.add(bSubmit);
this.setLayout(new BorderLayout());
this.add(pInput, BorderLayout.NORTH);
this.add(pSubmit, BorderLayout.CENTER);
addListener();
}
public static void main(String[] args) {
GUIUtil.showPanel(ConfigPanel.instance);
}
public void addListener() {
ConfigListener l = new ConfigListener();
bSubmit.addActionListener(l);
}
@Override
public void updateData() {
String budget = new ConfigService().get(ConfigService.budget);
String mysqlPath = new ConfigService().get(ConfigService.mysqlPath);
tfBudget.setText(budget);
tfMysqlPath.setText(mysqlPath);
tfBudget.grabFocus();
}
}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package util;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import gui.panel.WorkingPanel;
public class CenterPanel extends JPanel {
private double rate;// 拉伸比例
private JComponent c; // 显示的组件
private boolean strech; // 是否拉伸
public CenterPanel(double rate, boolean strech) {
this.setLayout(null);
this.rate = rate;
this.strech = strech;
}
public CenterPanel(double rate) {
this(rate, true);
}
public void repaint() {
if (null != c) {
Dimension containerSize = this.getSize();
Dimension componentSize = c.getPreferredSize();
if (strech)
c.setSize((int) (containerSize.width * rate), (int) (containerSize.height * rate));
else
c.setSize(componentSize);
c.setLocation(containerSize.width / 2 - c.getSize().width / 2,
containerSize.height / 2 - c.getSize().height / 2);
}
super.repaint();
}
public void show(JComponent p) {
this.c = p;
Component[] cs = getComponents();
for (Component c : cs) {
remove(c);
}
add(p);
if (p instanceof WorkingPanel)
((WorkingPanel) p).updateData();
this.updateUI();
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(200, 200);
f.setLocationRelativeTo(null);
CenterPanel cp = new CenterPanel(0.85, true);
f.setContentPane(cp);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
JButton b = new JButton("abc");
cp.show(b);
}
}
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2021-04-27
在show()方法中添加addListener()可以进一步减小代码量
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-01-17
有点小疑惑
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-04-12
tfBudget.grabFocus();
2019-02-25
对 ((WorkingPanel) p).updateData();的一些看法
2018-11-06
是不是也可以直接在ConfigPanel的构造函数里加上updateData()?
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 2 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|