复制代码Frame无法显示
2015-07-05 17:18
411 查看
package com.frame;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
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 java.util.prefs.Preferences;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.BevelBorder;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
public class Frame {
private JDesktopPane desktopPane;
private JFrame frame;
private JLabel backLabel;
private Preferences preferences;
//
private Map<String,JInternalFrame> ifs = new HashMap<String,JInternalFrame>();
public Frame(){
/**
frame = new JFrame("JXC");
frame.getContentPane().setBackground(new Color(170, 188, 120));
frame.addComponentListener(new FrameListener());
frame.getContentPane().setLayout(new BorderLayout());
frame.setBounds(100,100,800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭方式
backLabel = new JLabel();//背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);//背景标签的垂直对齐方式
backLabel.setHorizontalAlignment(SwingConstants.CENTER);//水平对齐
updateBackImange();//调用背静标签的方法
desktopPane = new JDesktopPane();//创建桌面面板
desktopPane .add(backLabel,new Integer(Integer.MIN_VALUE));//加到桌面面板
frame.getContentPane().add(desktopPane);//添加桌面面板到窗体
JTabbedPane navigationPane = createNavigationPanel();//创建左面导航面板
frame.getContentPane().add(navigationPane,BorderLayout.NORTH);//添加导航面板到窗体
frame.setVisible(true);
*/
frame = new JFrame("企业进销存管理系统");
frame.getContentPane().setBackground(new Color(170, 188, 120));
frame.addComponentListener(new FrameListener());
frame.getContentPane().setLayout(new BorderLayout());
frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backLabel = new JLabel();// 背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);
backLabel.setHorizontalAlignment(SwingConstants.CENTER);
updateBackImange(); // 更新或初始化背景图片
desktopPane = new JDesktopPane();
desktopPane.add(backLabel, new Integer(Integer.MIN_VALUE));
frame.getContentPane().add(desktopPane);
JTabbedPane navigationPanel = createNavigationPanel(); // 创建导航标签面板
frame.getContentPane().add(navigationPanel, BorderLayout.NORTH);
frame.setVisible(true);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Frame();
//new Login();
System.out.println("************88");
}
});
System.out.println("主窗体创建成功");
//Frame frame = new Frame();
}
/**
* 在该方法中创建JTabbedPane选项卡面板对象;
* @return
*/
private JTabbedPane createNavigationPanel() {
// TODO Auto-generated method stub
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setFocusable(false);//
tabbedPane.setBackground(new Color(211,230,192));//
tabbedPane.setBorder(new BevelBorder(BevelBorder.RAISED));//为突出选项卡的立体效果,设置使用边框效果
//基础信息管理面板
JPanel baseManagePanel = new JPanel();
baseManagePanel.setBackground(new Color(215,223,194));
baseManagePanel.setLayout(new BoxLayout(baseManagePanel, BoxLayout.X_AXIS));//
baseManagePanel.add(creatFrameButton("客户信息管理","KeHuGuanLi"));
baseManagePanel.add(creatFrameButton("商品信息管理","ShangPinGuanLi"));
baseManagePanel.add(creatFrameButton("供应商个信息管理","GongYingShangGuanLi"));
//库存管理面板
JPanel depotManagePanel = new JPanel();
depotManagePanel.setBackground(new Color(215,223,194));
depotManagePanel.setLayout(new BoxLayout(depotManagePanel, BoxLayout.X_AXIS));
depotManagePanel.add(creatFrameButton("库存盘点", "KuCunPanDian"));
depotManagePanel.add(creatFrameButton("价格调整", "JiaGeTiaoZheng"));
//销售管理
//查询统计面板
//进货管理
//系统管理
JPanel sysManagePanel = new JPanel();
sysManagePanel.setBackground(new Color(215,223,194));
sysManagePanel.setLayout(new BoxLayout(sysManagePanel, BoxLayout.X_AXIS));
sysManagePanel.add(creatFrameButton("操作员管理", "CaoZuoYuan"));
sysManagePanel.add(creatFrameButton("更改密码", "GengGaiMiMa"));
sysManagePanel.add(creatFrameButton("权限管理", "QuanXianGuanLI"));
//将所有面板添加到导航面板中
tabbedPane.addTab(" 基础信息管理 ",null,baseManagePanel,"基础信息管理");
tabbedPane.addTab("库存管理",null, depotManagePanel,"库存管理");
tabbedPane.addTab("系统管理 ", null, sysManagePanel,"系统管理");
return tabbedPane;
}
/**
* 负责创建Action对象,该对象用于创建并显示窗体对象。另外还包括图标、文本等属性。
* 如果将Action对象添加到系统菜单栏或者工具栏中,会直接创建相应的菜单项和工具按钮,而且这些菜单项和工具按钮将显示Action
* 对象的文本和图标属性。
* 本系统没有使用系统菜单,所以直接创建按钮对象
* @param string
* @param string2
* @return
*/
private Component creatFrameButton(String fName, String cname) {
// TODO Auto-generated method stub
String imgUrl = "jxcManage/res/ActionIcon/"+fName+".png";
String imgUrl_roll = "jxcManage/res/ActionIcon/"+fName+"_roll.png";
String imgUrl_down = "jxcManage/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);//用openFrameAction类创建action对象
JButton button = new JButton(action);
button.setMargin(new Insets(0,0,0,0));//用于设置按钮的四周边界大小
button.setHideActionText(true);//设置按钮隐藏Action对象的文本信息,例如一个只显示图标的按钮可以取消文本是按钮更加美观
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("internalFrame." + frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
ifs.put(frameName, jf);
} catch (Exception e) {
e.printStackTrace();
}
} else
jf = ifs.get(frameName);
return jf;
}
* @param frameName
* @return
*/
private JInternalFrame getIFrame(String frameName) {
// TODO Auto-generated method stub
JInternalFrame jf = null;
if(!ifs.containsKey(frameName)){
try{
Class fClass = Class.forName("internalFrame."+frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
ifs.put(frameName, jf);
}catch(Exception e){
e.printStackTrace();
}
}else{
jf = ifs.get(frameName);
}
return jf;
}
/*8
// 更新背景图片的方法
private void updateBackImage() {
if (backLabel != null) {
int backw = Frame.this.frame.getWidth();
int backh = frame.getHeight();
backLabel.setSize(backw, backh);
backLabel.setText("<html><body><image width='" + backw
+ "' height='" + (backh - 110) + "' src="
+Frame.this.getClass().getResource("welcome.jpg")
+ "'></img></body></html>");
}
}
*/
//初始化背景图片
private void updateBackImange() {
// TODO Auto-generated method stub
if(backLabel != null){
int backw = Frame.this.frame.getWidth();
int backh = frame.getHeight();
backLabel.setSize(backw,backh);//大小
backLabel.setText("<html><body><image width= '"+backw
+"'height='"+(backh - 110) + "' src="
+Frame.this.getClass().getResource("welcome.jpg")
+ "'></img></body></html>");//设置背景标签的图像
//背景标签使用HTML超文本语言设置了主窗体背景图片,该图片将随主窗体的大小自动缩放
}
}
// 窗体监听器
/**
private final class FrameListener extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
updateBackImage();
}
}
*/
// 窗体监听器
private final class FrameListener extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
updateBackImange();
}
}
/**
// 主窗体菜单项的单击事件监听器
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();
}
}
}
*/
//内部类
/**
* 必须继承AbstractAction类实现Action借口。该类用于创建导航按钮的Action对象,并为每个导航按钮定义创建并显示不同窗体对象的动作监听器
* 这个监听器在按钮被按下时,调用getIFrame()方法获取相应的窗体对象,并显示在主窗体中
*
*/
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);//设置action名称
putValue(Action.SHORT_DESCRIPTION, cname);//设置Action的提示文本框
putValue(Action.SMALL_ICON, icon);//设置Action的图标
}
@Override
public void actionPerformed( final ActionEvent e) {
// TODO Auto-generated method stub
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 el){
el.printStackTrace();
}
}
/**
* 该方法负责创建指定名称的窗体对象。是用来Java的反射技术,调用不同窗体类的默认构造方法创建窗体对象
* @param frameName2
* @return
*/
}
/**
* 在类的静态代码段中设置进销存管理系统的外观样式。Swing支持夸平台特性,它可以在不同的造作系统中保持一致的风格,
* 在本系统中使用UIManager类的setLookAndFeel()方法设置程序界面使用外观,这样可以使程序更像本地应用程序
*
*/
/**
* static {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
*/
static{
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 编写主窗体的main()入口方法,在该方法中创建登录窗体对象,登录窗体会验证登录信息,
* 并显示主窗体界面
*/
}
上面是复制的首页代码,原本应该显示图片,这样的
但是一直显示的是个很小的黑框,不能拖动,不能改变大小,甚至不能关闭;
真真是困扰了我一个下午,很是心烦,最后终于找到了问题所在
String imgUrl = "jxcManage/res/ActionIcon/"+fName+".png";
String imgUrl_roll = "jxcManage/res/ActionIcon/"+fName+"_roll.png";
String imgUrl_down = "jxcManage/res/ActionIcon/"+fName+"_down.png";
在添加图片时,原来代码是写的相对路径,可能人家设置了,自己没有设置,所以把路径改成绝对路径就可以,就是加上你的项目名称以及每一层目录名称
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
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 java.util.prefs.Preferences;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.BevelBorder;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
public class Frame {
private JDesktopPane desktopPane;
private JFrame frame;
private JLabel backLabel;
private Preferences preferences;
//
private Map<String,JInternalFrame> ifs = new HashMap<String,JInternalFrame>();
public Frame(){
/**
frame = new JFrame("JXC");
frame.getContentPane().setBackground(new Color(170, 188, 120));
frame.addComponentListener(new FrameListener());
frame.getContentPane().setLayout(new BorderLayout());
frame.setBounds(100,100,800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭方式
backLabel = new JLabel();//背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);//背景标签的垂直对齐方式
backLabel.setHorizontalAlignment(SwingConstants.CENTER);//水平对齐
updateBackImange();//调用背静标签的方法
desktopPane = new JDesktopPane();//创建桌面面板
desktopPane .add(backLabel,new Integer(Integer.MIN_VALUE));//加到桌面面板
frame.getContentPane().add(desktopPane);//添加桌面面板到窗体
JTabbedPane navigationPane = createNavigationPanel();//创建左面导航面板
frame.getContentPane().add(navigationPane,BorderLayout.NORTH);//添加导航面板到窗体
frame.setVisible(true);
*/
frame = new JFrame("企业进销存管理系统");
frame.getContentPane().setBackground(new Color(170, 188, 120));
frame.addComponentListener(new FrameListener());
frame.getContentPane().setLayout(new BorderLayout());
frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backLabel = new JLabel();// 背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);
backLabel.setHorizontalAlignment(SwingConstants.CENTER);
updateBackImange(); // 更新或初始化背景图片
desktopPane = new JDesktopPane();
desktopPane.add(backLabel, new Integer(Integer.MIN_VALUE));
frame.getContentPane().add(desktopPane);
JTabbedPane navigationPanel = createNavigationPanel(); // 创建导航标签面板
frame.getContentPane().add(navigationPanel, BorderLayout.NORTH);
frame.setVisible(true);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Frame();
//new Login();
System.out.println("************88");
}
});
System.out.println("主窗体创建成功");
//Frame frame = new Frame();
}
/**
* 在该方法中创建JTabbedPane选项卡面板对象;
* @return
*/
private JTabbedPane createNavigationPanel() {
// TODO Auto-generated method stub
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setFocusable(false);//
tabbedPane.setBackground(new Color(211,230,192));//
tabbedPane.setBorder(new BevelBorder(BevelBorder.RAISED));//为突出选项卡的立体效果,设置使用边框效果
//基础信息管理面板
JPanel baseManagePanel = new JPanel();
baseManagePanel.setBackground(new Color(215,223,194));
baseManagePanel.setLayout(new BoxLayout(baseManagePanel, BoxLayout.X_AXIS));//
baseManagePanel.add(creatFrameButton("客户信息管理","KeHuGuanLi"));
baseManagePanel.add(creatFrameButton("商品信息管理","ShangPinGuanLi"));
baseManagePanel.add(creatFrameButton("供应商个信息管理","GongYingShangGuanLi"));
//库存管理面板
JPanel depotManagePanel = new JPanel();
depotManagePanel.setBackground(new Color(215,223,194));
depotManagePanel.setLayout(new BoxLayout(depotManagePanel, BoxLayout.X_AXIS));
depotManagePanel.add(creatFrameButton("库存盘点", "KuCunPanDian"));
depotManagePanel.add(creatFrameButton("价格调整", "JiaGeTiaoZheng"));
//销售管理
//查询统计面板
//进货管理
//系统管理
JPanel sysManagePanel = new JPanel();
sysManagePanel.setBackground(new Color(215,223,194));
sysManagePanel.setLayout(new BoxLayout(sysManagePanel, BoxLayout.X_AXIS));
sysManagePanel.add(creatFrameButton("操作员管理", "CaoZuoYuan"));
sysManagePanel.add(creatFrameButton("更改密码", "GengGaiMiMa"));
sysManagePanel.add(creatFrameButton("权限管理", "QuanXianGuanLI"));
//将所有面板添加到导航面板中
tabbedPane.addTab(" 基础信息管理 ",null,baseManagePanel,"基础信息管理");
tabbedPane.addTab("库存管理",null, depotManagePanel,"库存管理");
tabbedPane.addTab("系统管理 ", null, sysManagePanel,"系统管理");
return tabbedPane;
}
/**
* 负责创建Action对象,该对象用于创建并显示窗体对象。另外还包括图标、文本等属性。
* 如果将Action对象添加到系统菜单栏或者工具栏中,会直接创建相应的菜单项和工具按钮,而且这些菜单项和工具按钮将显示Action
* 对象的文本和图标属性。
* 本系统没有使用系统菜单,所以直接创建按钮对象
* @param string
* @param string2
* @return
*/
private Component creatFrameButton(String fName, String cname) {
// TODO Auto-generated method stub
String imgUrl = "jxcManage/res/ActionIcon/"+fName+".png";
String imgUrl_roll = "jxcManage/res/ActionIcon/"+fName+"_roll.png";
String imgUrl_down = "jxcManage/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);//用openFrameAction类创建action对象
JButton button = new JButton(action);
button.setMargin(new Insets(0,0,0,0));//用于设置按钮的四周边界大小
button.setHideActionText(true);//设置按钮隐藏Action对象的文本信息,例如一个只显示图标的按钮可以取消文本是按钮更加美观
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("internalFrame." + frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
ifs.put(frameName, jf);
} catch (Exception e) {
e.printStackTrace();
}
} else
jf = ifs.get(frameName);
return jf;
}
* @param frameName
* @return
*/
private JInternalFrame getIFrame(String frameName) {
// TODO Auto-generated method stub
JInternalFrame jf = null;
if(!ifs.containsKey(frameName)){
try{
Class fClass = Class.forName("internalFrame."+frameName);
Constructor constructor = fClass.getConstructor(null);
jf = (JInternalFrame) constructor.newInstance(null);
ifs.put(frameName, jf);
}catch(Exception e){
e.printStackTrace();
}
}else{
jf = ifs.get(frameName);
}
return jf;
}
/*8
// 更新背景图片的方法
private void updateBackImage() {
if (backLabel != null) {
int backw = Frame.this.frame.getWidth();
int backh = frame.getHeight();
backLabel.setSize(backw, backh);
backLabel.setText("<html><body><image width='" + backw
+ "' height='" + (backh - 110) + "' src="
+Frame.this.getClass().getResource("welcome.jpg")
+ "'></img></body></html>");
}
}
*/
//初始化背景图片
private void updateBackImange() {
// TODO Auto-generated method stub
if(backLabel != null){
int backw = Frame.this.frame.getWidth();
int backh = frame.getHeight();
backLabel.setSize(backw,backh);//大小
backLabel.setText("<html><body><image width= '"+backw
+"'height='"+(backh - 110) + "' src="
+Frame.this.getClass().getResource("welcome.jpg")
+ "'></img></body></html>");//设置背景标签的图像
//背景标签使用HTML超文本语言设置了主窗体背景图片,该图片将随主窗体的大小自动缩放
}
}
// 窗体监听器
/**
private final class FrameListener extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
updateBackImage();
}
}
*/
// 窗体监听器
private final class FrameListener extends ComponentAdapter {
public void componentResized(final ComponentEvent e) {
updateBackImange();
}
}
/**
// 主窗体菜单项的单击事件监听器
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();
}
}
}
*/
//内部类
/**
* 必须继承AbstractAction类实现Action借口。该类用于创建导航按钮的Action对象,并为每个导航按钮定义创建并显示不同窗体对象的动作监听器
* 这个监听器在按钮被按下时,调用getIFrame()方法获取相应的窗体对象,并显示在主窗体中
*
*/
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);//设置action名称
putValue(Action.SHORT_DESCRIPTION, cname);//设置Action的提示文本框
putValue(Action.SMALL_ICON, icon);//设置Action的图标
}
@Override
public void actionPerformed( final ActionEvent e) {
// TODO Auto-generated method stub
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 el){
el.printStackTrace();
}
}
/**
* 该方法负责创建指定名称的窗体对象。是用来Java的反射技术,调用不同窗体类的默认构造方法创建窗体对象
* @param frameName2
* @return
*/
}
/**
* 在类的静态代码段中设置进销存管理系统的外观样式。Swing支持夸平台特性,它可以在不同的造作系统中保持一致的风格,
* 在本系统中使用UIManager类的setLookAndFeel()方法设置程序界面使用外观,这样可以使程序更像本地应用程序
*
*/
/**
* static {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
*/
static{
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 编写主窗体的main()入口方法,在该方法中创建登录窗体对象,登录窗体会验证登录信息,
* 并显示主窗体界面
*/
}
上面是复制的首页代码,原本应该显示图片,这样的
但是一直显示的是个很小的黑框,不能拖动,不能改变大小,甚至不能关闭;
真真是困扰了我一个下午,很是心烦,最后终于找到了问题所在
String imgUrl = "jxcManage/res/ActionIcon/"+fName+".png";
String imgUrl_roll = "jxcManage/res/ActionIcon/"+fName+"_roll.png";
String imgUrl_down = "jxcManage/res/ActionIcon/"+fName+"_down.png";
在添加图片时,原来代码是写的相对路径,可能人家设置了,自己没有设置,所以把路径改成绝对路径就可以,就是加上你的项目名称以及每一层目录名称
相关文章推荐
- Java学习小心得
- DedeAMPZ配置php的curl扩展
- 【C语言】printf函数和scanf函数典型例子
- Eclipse删除代码中所有注释及空格
- Spring 在XML中声明切面/AOP
- Asp.net Vnext Routing
- 如何创建phpinfo查看php信息?
- C语言-共用体
- JAVA CAS原理深度分析
- (转)python中集合的运算
- VB获取本机网卡类型、IP、MAC地址
- PHP 错误与异常 笔记与总结(15 )使用观察者模式处理异常信息
- C++11初探
- Eclipse的使用
- Servlet - Java Web Core Component
- JDK、JRE和JVM三者之间的关系
- Java EE发展史
- 【C++】通用单链表
- 《java课程设计》之猜猜看游戏(四)
- javaSE学习笔记之面向对象程序设计(二)