62,614
社区成员
发帖
与我相关
我的任务
分享
/这段代码主要是为读者介绍如何将创建好的菜单放置在顶层容器内
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.beans.PropertyVetoException;
import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import net.hlj.hqtt.listerner.AddMoneyListerner;
import net.hlj.hqtt.listerner.UserCedeListerner;
public class Main {
public static JDesktopPane desktopPane;
private static JFrame frame;
private JLabel backLabel;
public static Map<String, JInternalFrame> ifs = new HashMap<String, JInternalFrame>();
public Main() {
frame = new JFrame("管理系统");
frame.setBounds(0, 0, 1000, 700);
frame.getContentPane().setBackground(new Color(170, 188, 120));
frame.getContentPane().setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("管理系统");
JMenuBar menubar1 = new JMenuBar();// 添加菜单条组件
frame.setJMenuBar(menubar1);// 将菜单条添加到顶层容器中
JMenu menu1 = new JMenu("会员卡管理"); // 设置菜单组件
JMenu menu2 = new JMenu("商品管理");
JMenu menu4 = new JMenu("会员卡管理 ");
JMenu menu3 = new JMenu("系统管理");
menubar1.add(menu1);// 将菜单组件添加到菜单条组件中
menubar1.add(menu2);
menubar1.add(menu4);
menubar1.add(menu3);
// JMenuItem item1 = new JMenuItem("网上会员开卡");// 创建菜单项组件
JMenuItem item3 = new JMenuItem("会员过户");
JMenuItem item4 = new JMenuItem("充值");
menu1.add(createFrameButton("老会员开卡", "user.OldUserCardFrame"));
menu1.add(createFrameButton("新会员开卡", "user.NewUserCardFrame"));
menu1.add(createFrameButton("挂失", "user.UserCardLossFrame"));
menu1.add(createFrameButton("解除挂失", "user.UserCardUnLossFrame"));
menu1.add(createFrameButton("补卡", "user.UserSecondCardFrame"));
menu1.add(createFrameButton("消卡", "user.UserCardCancelFrame"));
menu1.add(createFrameButton("积分转存", "user.UserScoreTrunFrame"));
// menu1.add(item1); // 将菜单项组件添加到相应的菜单组件中去
menu1.addSeparator();// 菜单项之间的分割线组件
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();
// JMenuItem item2_1 = new JMenuItem("购买商品");
// menu2.add(createFrameButton("购买商品", "goods.BuyGoodsFrame"));
menu2.add(createFrameButton("添加商品", "goods.AddGoodsFrame"));
menu2.add(createFrameButton("退货管理", "goods.BackGoodsFrame"));
JMenuItem item2_4 = new JMenuItem("购买商品");
menu2.add(createFrameButton("销售查询", "goods.QuerySaleFrame"));
item2_4.addActionListener(new BuyGoodsListerner());
item3.addActionListener(new UserCedeListerner());
item4.addActionListener(new AddMoneyListerner());
menu2.add(createFrameButton("商品管理", "goods.QueryGoodsFrame"));
JMenuItem item2_6 = new JMenuItem("购买商品3");
menu3.add(createFrameButton("关于我们", "sys.AboutFrame"));
menu3.add(createFrameButton("更新数据", "sys.UpdateSQL"));
menu2.add(item2_4);
menu4.add(createFrameButton("充值记录", "goods.QueryCardListFrame"));
menu4.add(createFrameButton("消费记录", "goods.QueryCardSaleListFrame"));
// menu2.add(item2_6);
backLabel = new JLabel();// 背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);
backLabel.setHorizontalAlignment(SwingConstants.CENTER);
updateBackImage(); // 更新或初始化背景图片
desktopPane = new JDesktopPane();
desktopPane.add(backLabel, new Integer(Integer.MIN_VALUE));
frame.getContentPane().add(desktopPane);
frame.setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
/** *********************辅助方法************************* */
// 为内部窗体添加Action的方法
private JMenuItem createFrameButton(String fName, String cname) {
String imgUrl = "res/ActionIcon/" + fName + ".png";
String imgUrl_roll = "res/ActionIcon/" + fName + "_roll.png";
String imgUrl_down = "res/ActionIcon/" + fName + "_down.png";
Icon icon = new ImageIcon(imgUrl);
Icon icon_roll = null;
if (imgUrl_roll != null)
icon_roll = new ImageIcon(imgUrl_roll);
Icon icon_down = null;
if (imgUrl_down != null)
icon_down = new ImageIcon(imgUrl_down);
Action action = new openFrameAction(fName, cname, icon);
JMenuItem button = new JMenuItem(action);
button.setMargin(new Insets(0, 0, 0, 0));
button.setFocusPainted(false);
button.setBorderPainted(false);
button.setContentAreaFilled(false);
if (icon_roll != null)
button.setRolloverIcon(icon_roll);
if (icon_down != null)
button.setPressedIcon(icon_down);
return button;
}
// 获取内部窗体的唯一实例对象
private JInternalFrame getIFrame(String frameName) {
JInternalFrame jf = null;
if (!ifs.containsKey(frameName)) {
try {
Class fClass = Class.forName("net.hlj.hqtt.frame." + frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
jf.setClosable(true);
jf.setMaximizable(true);
jf.setResizable(true);
jf.isOpaque();
ifs.put(frameName, jf);
} catch (Exception e) {
e.printStackTrace();
}
} else
jf = ifs.get(frameName);
jf.setClosable(true);
jf.setMaximizable(true);
jf.setResizable(true);
jf.isOpaque();
return jf;
}
// 更新背景图片的方法
private void updateBackImage() {
if (backLabel != null) {
int backw = Main.this.frame.getWidth();
int backh = frame.getHeight();
backLabel.setSize(backw, backh);
backLabel.setText("<html><body><image width='" + backw
+ "' height='" + (backh - 61) + "' src="
+ Main.this.getClass().getResource("welcome.jpg")
+ "'></img></body></html>");
System.out.println(Main.this.getClass().getResource("welcome.jpg"));
}
}
// 窗体监听器
private final class FrameListener extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
updateBackImage();
}
}
// 主窗体菜单项的单击事件监听器
protected final class openFrameAction extends AbstractAction {
private String frameName = null;
private openFrameAction() {
}
public openFrameAction(String cname, String frameName, Icon icon) {
this.frameName = frameName;
putValue(Action.NAME, cname);
putValue(Action.SHORT_DESCRIPTION, cname);
// putValue(Action.SMALL_ICON, icon);
}
public void actionPerformed(final ActionEvent e) {
JInternalFrame jf = getIFrame(frameName);
// 在内部窗体闭关时,从内部窗体容器ifs对象中清除该窗体。
jf.addInternalFrameListener(new InternalFrameAdapter() {
public void internalFrameClosed(InternalFrameEvent e) {
ifs.remove(frameName);
}
});
if (jf.getDesktopPane() == null) {
desktopPane.add(jf);
jf.setVisible(true);
}
try {
jf.setSelected(true);
} catch (PropertyVetoException e1) {
e1.printStackTrace();
}
}
}
static {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
package net.hlj.hqtt.frame.user;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import net.hlj.hqtt.dao.AreaDao;
import net.hlj.hqtt.dao.UserDao;
import net.hlj.hqtt.model.ComboItem;
import net.hlj.hqtt.model.UserModel;
import net.hlj.hqtt.util.CardUtils;
public class NewUserCardFrame extends JInternalFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public JTextField userName;
public JComboBox quanXian;
public static JTextField name;
public JTextField pass;
public JButton modifyButton;
public JButton closeButton;
public JComboBox userCombo;
public static String userId;
public JComboBox Area1Box;
public JComboBox Area2Box;
public JComboBox Area3Box;
public JComboBox SuperBox;
static JPanel panel;
public NewUserCardFrame() {
setClosable(true);
setIconifiable(true);
setBounds(100, 100, 820, 320);
setTitle("新会员开卡");
setLayout(new GridBagLayout());
final JLabel khName = new JLabel();
khName.setText("登录名:");
setupComponet(khName, 0, 0, 1, 0, false);
userName = new JTextField();
setupComponet(userName, 1, 0, 1, 100, true);
final JLabel addressLabel = new JLabel("用户姓名:");
setupComponet(addressLabel, 2, 0, 1, 0, false);
name = new JTextField();
setupComponet(name, 3, 0, 1, 100, true);
final JLabel emailLabel = new JLabel("电子邮箱:");
setupComponet(emailLabel, 0, 1, 1, 0, false);
JTextField emailText = new JTextField();
setupComponet(emailText, 1, 1, 1, 100, true);
final JLabel IDLabel = new JLabel("身份证:");
setupComponet(IDLabel, 2, 1, 1, 0, false);
final JTextField IDText = new JTextField();
setupComponet(IDText, 3, 1, 1, 100, true);
final JLabel TelLabel = new JLabel("电话号码:");
setupComponet(TelLabel, 0, 2, 1, 0, false);
final JTextField TelText = new JTextField();
setupComponet(TelText, 1, 2, 1, 100, true);
final JLabel AddrLabel = new JLabel("地址:");
setupComponet(AddrLabel, 0, 3, 1, 0, false);
final JTextField AddrText = new JTextField();
setupComponet(AddrText, 1, 3, 3, 80, true);
final JLabel Area1Label = new JLabel("地区:");
setupComponet(Area1Label, 0, 4, 1, 0, false);
Area1Box = new JComboBox();
setupComponet(Area1Box, 1, 4, 1, 80, true);
Area2Box = new JComboBox();
setupComponet(Area2Box, 2, 4, 1, 80, true);
Area3Box = new JComboBox();
setupComponet(Area3Box, 3, 4, 1, 80, true);
Area1Box.setPreferredSize(new Dimension(60, 20));
Area1Box.setMinimumSize(new Dimension(60, 20));
Area1Box.setPreferredSize(new Dimension(60, 20));
Area2Box.setPreferredSize(new Dimension(60, 20));
Area2Box.setMinimumSize(new Dimension(60, 20));
Area2Box.setPreferredSize(new Dimension(60, 20));
Area3Box.setPreferredSize(new Dimension(60, 20));
Area3Box.setMinimumSize(new Dimension(60, 20));
Area3Box.setPreferredSize(new Dimension(60, 20));
final JLabel SuperLabel = new JLabel("邀请人:");
setupComponet(SuperLabel, 0, 5, 1, 0, false);
SuperBox = new JComboBox();
setupComponet(SuperBox, 1, 5, 1, 80, true);
initComboProvinceBox();
Area1Box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String id = ((ComboItem) Area1Box.getSelectedItem()).getValue();
initComboCityBox(id);
}
});
Area2Box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (Area2Box.getSelectedItem() != null) {
String id = ((ComboItem) Area2Box.getSelectedItem())
.getValue();
initComboAreaBox(id);
}
}
});
Area3Box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (Area3Box.getSelectedItem() != null) {
String id = ((ComboItem) Area3Box.getSelectedItem())
.getValue();
initComboSuperBox(id);
}
}
});
modifyButton = new JButton("确认");
closeButton = new JButton("关闭");
setupComponet(modifyButton, 1, 6, 1, 0, false);
setupComponet(closeButton, 2, 6, 1, 0, false);
setBackground(Color.pink);
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NewUserCardFrame.this.doDefaultCloseAction();
}
});
modifyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
UserModel user = new UserModel();
user.setUserName(userName.getText());
user.setName(name.getText());
user.setTel(TelText.getText());
user.setAddress(AddrText.getText());
user.setIdentify(IDText.getText());
user.setProvince(((ComboItem) Area1Box.getSelectedItem())
.getValue());
user.setCity(((ComboItem) Area2Box.getSelectedItem())
.getValue());
user.setArea(((ComboItem) Area3Box.getSelectedItem())
.getValue());
user.setSuperId(((ComboItem) SuperBox.getSelectedItem())
.getValue());
long status = CardUtils.getCardNo();
long cardNo = UserDao.getCardNo();
String cardNum=CardUtils.getUserCard();
if (status <= 0) {
JOptionPane.showMessageDialog(OldUserCardFrame.panel,
"请将IC卡放置在读卡器上!", "错误", JOptionPane.ERROR_MESSAGE);
}else if (Long.parseLong(cardNum) >= 1000000000000000l) {
JOptionPane.showMessageDialog(OldUserCardFrame.panel,
"该卡已经注册!", "错误", JOptionPane.ERROR_MESSAGE);
} else
{
user.setCardNo(String.valueOf(cardNo));
int r = UserDao.regedit(user);
if (r != 0) {
CardUtils.writeCardNo(String.valueOf(cardNo));
JOptionPane.showMessageDialog(NewUserCardFrame.this,
"注册成功");
} else {
JOptionPane.showMessageDialog(NewUserCardFrame.this,
"注册失败!");
}
}
}
});
setVisible(true);
}
// 初始化客户下拉选择框
public void initComboProvinceBox() {
System.out.println("省级下拉菜========");
List province = AreaDao.getProvince();
List<ComboItem> items = new ArrayList<ComboItem>();
Area1Box.removeAllItems();
for (Iterator iter = province.iterator(); iter.hasNext();) {
List element = (List) iter.next();
ComboItem item = new ComboItem();
item.setValue(element.get(0).toString().trim());
item.setText(element.get(1).toString().trim());
items.add(item);
Area1Box.addItem(item);
}
}
// 初始化客户下拉选择框
public void initComboCityBox(String id) {
System.out.println("市 级下拉菜========" + id);
List province = AreaDao.getCity(id);
List<ComboItem> items = new ArrayList<ComboItem>();
Area2Box.removeAllItems();
for (Iterator iter = province.iterator(); iter.hasNext();) {
List element = (List) iter.next();
ComboItem item = new ComboItem();
item.setValue(element.get(0).toString().trim());
item.setText(element.get(1).toString().trim());
items.add(item);
Area2Box.addItem(item);
}
}
// 初始化客户下拉选择框
public void initComboAreaBox(String id) {
System.out.println("区级下拉菜========" + id);
List province = AreaDao.getArea(id);
List<ComboItem> items = new ArrayList<ComboItem>();
Area3Box.removeAllItems();
for (Iterator iter = province.iterator(); iter.hasNext();) {
List element = (List) iter.next();
ComboItem item = new ComboItem();
item.setValue(element.get(0).toString().trim());
item.setText(element.get(1).toString().trim());
items.add(item);
Area3Box.addItem(item);
}
}
// 初始化客户下拉选择框
public void initComboSuperBox(String id) {
List province = UserDao.getUserByArea(id);
List<ComboItem> items = new ArrayList<ComboItem>();
SuperBox.removeAllItems();
for (Iterator iter = province.iterator(); iter.hasNext();) {
List element = (List) iter.next();
ComboItem item = new ComboItem();
item.setValue(element.get(0).toString().trim());
item.setText(element.get(1).toString().trim());
items.add(item);
SuperBox.addItem(item);
}
}
// 设置组件位置并添加到容器中
private void setupComponet(JComponent component, int gridx, int gridy,
int gridwidth, int ipadx, boolean fill) {
final GridBagConstraints gridBagConstrains = new GridBagConstraints();
gridBagConstrains.gridx = gridx;
gridBagConstrains.gridy = gridy;
if (gridwidth > 1)
gridBagConstrains.gridwidth = gridwidth;
if (ipadx > 0)
gridBagConstrains.ipadx = ipadx;
gridBagConstrains.insets = new Insets(5, 1, 3, 1);
if (fill)
gridBagConstrains.fill = GridBagConstraints.HORIZONTAL;
add(component, gridBagConstrains);
}