窗体关闭按钮不显示!

liuguocheng 2013-10-17 05:04:29

我发现上面的标题栏的地方没有背景了,关闭按钮也不显示了。怎么回事呢?
...全文
543 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuguocheng 2013-10-21
  • 打赏
  • 举报
回复
主窗体:点击这里面的菜单出现上面的图形,这里面用的是 JInternalFrame ,不知道为什么标题栏,好像显示的有问题,按钮显示的好像也不对。。。。。

/这段代码主要是为读者介绍如何将创建好的菜单放置在顶层容器内
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();
		}
	}
liuguocheng 2013-10-21
  • 打赏
  • 举报
回复

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);
	}

 
fearlessMore 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
代码发出来看下。是用的JFRAME吗?
看界面 貌似不是用的JFrame、
teemai 2013-10-17
  • 打赏
  • 举报
回复
this.setUndecorated(false);
teemai 2013-10-17
  • 打赏
  • 举报
回复
代码发出来看下。是用的JFRAME吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧