[java]代码库
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
/**
* 桌面面板和内部窗体
* @author Administrator
*
*/
public class JDeskPane_and_JInternalFrame extends JFrame{
JDesktopPane desktopPane = null;
//InternalFrame类----是自己定义的一个类
InternalFrame aInFrame = null;
InternalFrame bInFrame = null;
InternalFrame cInFrame = null;
public static void main(String[] args) {
//再次显示JFrame窗体------能起到刷新的效果
new JDeskPane_and_JInternalFrame().setVisible(true);
}
/**
* 构造方法
*/
public JDeskPane_and_JInternalFrame(){
this.setTitle("JDeskPane_and_JInternalFrame");
//显示JFrame窗体
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 600);
//设置JFrame窗体在电脑显示屏居中
this.setLocationRelativeTo(null);
//获取图片的路径
URL resource = this.getClass().getResource("aa.jpg");
//获取图片
Image image = Toolkit.getDefaultToolkit().getImage(resource);
//设置JFrame窗体的----图标
this.setIconImage(image);
desktopPane = new JDesktopPane();
//设置JDesktopPane的背景颜色
desktopPane.setBackground(Color.lightGray);
this.getContentPane().add(desktopPane, BorderLayout.CENTER);
final JPanel panel = new JPanel();
//设置JPanel的背景颜色
panel.setBackground(Color.gray);
this.getContentPane().add(panel, BorderLayout.NORTH);
JButton aButton = new JButton("AAA--Button");
aButton.addActionListener(new ButtonListener(aInFrame, "aButton---实例化的AAA"));
panel.add(aButton);
JButton bButton = new JButton("BBB--Button");
bButton.addActionListener(new ButtonListener(bInFrame, "bButton---实例化的BBB"));
panel.add(bButton);
JButton cButton = new JButton("CCC--Button");
cButton.addActionListener(new ButtonListener(cInFrame, "cButton--实例化的CCC"));
panel.add(cButton);
}
/**
* 设置一个按钮事件的监听类
*
* @author Administrator
*
*/
private class ButtonListener implements ActionListener{
InternalFrame inFrame;
String title;
/**
*构造方法
*/
public ButtonListener(InternalFrame inFrame, String title) {
this.inFrame = inFrame;
this.title = title;
}
/**
* 鼠标的事件监听
*/
@Override
public void actionPerformed(ActionEvent e) {
/**
* 只有窗体没有实例化,或者窗体实例化后关闭了。
* 才能打开窗体
*/
if(inFrame == null || inFrame.isClosed()){
//获取桌面面板中所有-----实例化的内部窗体
JInternalFrame[] allFrames = desktopPane.getAllFrames();
/*根据实例化的JInternalFrame,设置连个窗体的间隔,
使实例化后的窗体不叠在一起。*/
int Hight = 30 * allFrames.length;
int x = 30 + Hight;
int y = x;
int width = 400;
int height = 300;
inFrame = new InternalFrame(title);
//设置inFrame实例化后的内部窗体的位置、大小
inFrame.setBounds(x, y, width, height);
//设置inFrame内部窗体显示
inFrame.setVisible(true);
//将inFrame添加到JDesktopPane中
desktopPane.add(inFrame);
}
//设置触发按钮事件的窗体被选中。
//那个按钮实例化的JInternalFrame,点击后这是内部窗体被选中
try {
inFrame.setSelected(true);
} catch (PropertyVetoException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
/**
* 内部窗体类------JInternalFrame
* @author Administrator
*
*/
private class InternalFrame extends JInternalFrame{
public InternalFrame(String title){
//设置内部窗体的标题
this.setTitle(title);
//设置内部窗体---是否可以改变大小
this.setResizable(true);
//设置内部窗体---是否可以关闭
this.setClosable(true);
//设置内部窗体---是否最大化
this.setMaximizable(true);
//设置内部窗体---是否可以最小化
this.setIconifiable(true);
URL resource = this.getClass().getResource("aa.jpg");
ImageIcon imageIcon = new ImageIcon(resource);
//设置窗体的图标
this.setFrameIcon(imageIcon);
}
}
}
[代码运行效果截图]
中级程序员
by: 陆痴 发表于:2017-04-24 21:55:36 顶(1) | 踩(1) 回复
点击一个按钮,在JDesktopPane(桌面面板)中弹出一个JInternalFrame(内部窗体)
回复评论