日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA实现可设置背景的MDI窗口

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA实现可设置背景的MDI窗口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JAVA實現可設置背景的MDI窗口 我們都知道,MDI(Multiple Document Interface)即多文檔界面。使用MDI窗體時,將在一個父窗體內建立工作區,父窗體能夠令一個以上的子窗體限制于其中活動及操作。在office系列及VS/VS.Net等很多軟件中都使用了MDI的表現形式。
?? 而遺憾的是,雖然很多編程語言都提供了顯著的MDI屬性,但Java卻算是個例外,基本上只能通過JDesktopPane結合JInternalFrame進行實現,而且局限性也比較多。
? 其實,利用Swing完成MDI,還有更簡單的捷徑可循。
? 下面,我給出一個簡單的例子:
? package?org.loon.test;
/**?*//**
?*?<p>Title:?LoonFramework</p>
?*?<p>Description:</p>
?*?<p>Copyright:?Copyright?(c)?2007</p>
?*?<p>Company:?LoonFramework</p>
?*?
@author?chenpeng??
?*?@email:ceponline@yahoo.com.cn?
?*?
@version?0.1
?
*/

import?javax.imageio.ImageIO;
import?javax.swing.BorderFactory;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JLayeredPane;
import?javax.swing.JPanel;
import?javax.swing.JTextArea;
import?javax.swing.SwingConstants;
import?javax.swing.WindowConstants;
import?javax.swing.border.Border;

import?java.awt.BorderLayout;
import?java.awt.Color;
import?java.awt.Dimension;
import?java.awt.EventQueue;
import?java.awt.Font;
import?java.awt.Graphics;
import?java.awt.Image;
import?java.awt.Insets;
import?java.awt.Point;
import?java.awt.event.MouseEvent;
import?java.awt.event.MouseListener;
import?java.awt.event.MouseMotionListener;
import?java.io.IOException;



public?class?JavaMDI?extends?JPanel?...{
????
/**?*//**
?????*?
?????
*/

????
private?static?final?long?serialVersionUID?=?1L;


????
private?static?final?int?BACKLAYER?=?1;

????
????Font?FONT?
=?new?Font("宋體",?Font.PLAIN,?12);

????
private?final?BackImagePane?layerPane;
????
//子窗體背景色
????private?int[]?colors?=?...{?0xdddddd,?0xaaaaff,?0xffaaaa,?0xaaffaa,?0xffffaa,?0xffaaff,?0xaaffff?,?0xddddff};
??
????
private?Color?getColor(int?i,?float?f)?...{
????????
int?b?=?(int)((i?&?0xff)?*?f);
????????i?
=?i?>>?8;
????????
int?g?=?(int)((i?&?0xff)?*?f);
????????i?
=?i?>>?8;
????????
int?r?=?(int)((i?&?0xff)?*?f);
????????
return?new?Color(r,g,b);
????}


????
public?JavaMDI()?...{
????????
super(new?BorderLayout());
????????
????????Image?image;
????????
try?...{
????????????image?
=?ImageIO.read(getClass().getResource("javamdi.jpg"));
????????}
?catch?(IOException?e)?...{
????????????image
=null;
????????}

????????layerPane?
=?new?BackImagePane();
????????layerPane.setImage(image);

????????
//隨機生成個子面板,作為內部窗體,實際使用時替換JPanel內部容器即可。
????????for?(int?i=0;?i<colors.length;?i++)?...{
????????????JPanel?p?
=?createChildPanel(i);
????????????p.setLocation(i
*80?+?20,?i*50?+?15);
????????????layerPane.add(p,?BACKLAYER);
????????}

????????add(layerPane,?BorderLayout.CENTER);
????????
????}



????
/**?*//**
?????*?創建子面板,作為在內部移動的窗體
?????*?
@param?i
?????*?
@return
?????
*/

????
private?JPanel?createChildPanel(int?i)?...{
????????
//使用html標記設定顏色
????????String?html?=?"<html><font?color=#333333>?子窗體ID?"+?i?+"</font></html>";
????????JLabel?label?
=?new?JLabel(html);
????????label.setFont(FONT);
????????label.setOpaque(
true);
????????label.setHorizontalAlignment(SwingConstants.CENTER);
????????
//設定背景色
????????label.setBackground(getColor(colors[i],?0.85f));
????????
//設定邊距
????????Border?border1?=?BorderFactory.createEmptyBorder(4,?4,?4,?4);;
????????label.setBorder(border1);

????????JTextArea?text?
=?new?JTextArea();
????????text.setBackground(?
new?Color(colors[i]));
????????text.setMargin(
new?Insets(4,4,4,4));
????????text.setLineWrap(
true);

????????JPanel?p?
=?new?JPanel();

????????Color?col?
=?getColor(colors[i],?0.5f);
????????Border?border?
=?BorderFactory.createLineBorder(col,?1);
????????p.setBorder(border);

????????
//移動監聽
????????DragMouseListener??li?=?new?DragMouseListener(p);
????????p.addMouseListener(li);
????????p.addMouseMotionListener(li);

????????p.setLayout(?
new?BorderLayout());
????????p.add(label,?BorderLayout.NORTH);
????????p.add(text,?BorderLayout.CENTER);
????????
//子窗體大小
????????p.setSize(?new?Dimension(200,?150));
????????
return?p;
????}



????
/**?*//**
?????*?子窗體拖拽監聽
?????*?
@author?chenpeng
?????*
?????
*/

????
class?DragMouseListener?implements?MouseListener,?MouseMotionListener?...{
????????Point?origin;
????????JPanel?panel;

????????DragMouseListener(JPanel?p)?
...{
????????????panel?
=?p;
????????}

????????
public?void?mousePressed(MouseEvent?e)?...{
????????????origin?
=?new?Point(?e.getX(),?e.getY());
????????????
//移動
????????????layerPane.moveToFront(panel);
????????}

????????
public?void?mouseDragged(MouseEvent?e)?...{
????????????
if?(origin?==?null)?return;
????????????
int?dx?=?e.getX()?-?origin.x;
????????????
int?dy?=?e.getY()?-?origin.y;
????????????Point?p?
=?panel.getLocation();
????????????panel.setLocation(?p.x?
+?dx,?p.y?+?dy);
????????}


????????
public?void?mouseClicked(MouseEvent?e)?...{}
????????
public?void?mouseEntered(MouseEvent?e)?...{}
????????
public?void?mouseExited(MouseEvent?e)?...{}
????????
public?void?mouseReleased(MouseEvent?e)?...{}
????????
public?void?mouseMoved(MouseEvent?e)?...{}
????}


????
//用分層面板JLayeredPane制作MDI背景
????class?BackImagePane?extends?JLayeredPane?...{
????????
/**?*//**
?????????*?
?????????
*/

????????
private?static?final?long?serialVersionUID?=?1L;

????????
public?BackImagePane()?...{
????????????
super();
????????}


????????
void?setImage(Image?img)?...{
????????????bgImage?
=?img;
????????}

????????
private?Image?bgImage;

????????
public?void?paint(Graphics?g)?...{
????????????
if?(bgImage?!=?null)?...{
????????????????
int?imageh?=?bgImage.getHeight(null);
????????????????
int?imagew?=?bgImage.getWidth(null);
????????????????Dimension?d?
=?getSize();
????????????????
for(int?h=0;?h<d.getHeight();?h?+=?imageh)?...{
????????????????????
for(int?w=0;?w<d.getWidth();?w?+=?imagew)?...{
????????????????????????g.drawImage(bgImage,?w,?h,?
this);
????????????????????}

????????????????}

????????????}

????????????
super.paint(g);
????????}

????}


????
public?static?void?main(String[]?args)?...{
????????EventQueue.invokeLater(
new?Runnable()?...{
????????????
public?void?run()?...{
????????????????createGUI();
????????????}

????????}
);
????}

????
public?static?void?createGUI()?...{
????????
final?JFrame?frame?=?new?JFrame("JAVA實現可設置背景的MDI窗口");
????????frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
????????frame.setSize(
new?Dimension(800,?600));
????????frame.getContentPane().add(
new?JavaMDI());
????????frame.setAlwaysOnTop(
true);
????????frame.setLocationRelativeTo(
null);
????????frame.setVisible(
true);
????}

}




效果圖如下:

posted on 2007-12-26 16:47 cping 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/cping1982/archive/2007/12/26/2258076.html

總結

以上是生活随笔為你收集整理的JAVA实现可设置背景的MDI窗口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费观看视频一区二区 | 91免费黄 | 亚洲熟妇一区二区三区 | 成人网入口 | 黑人巨大精品欧美一区二区 | 一区二区欧美在线观看 | av小说在线| 国产无套丰满白嫩对白 | 99草在线视频| 奇米色在线 | 欧洲精品在线观看 | 51妺嘿嘿午夜福利 | 免费av观看网址 | 激情戏网站 | 无码精品人妻一区二区三区湄公河 | 日本乱大交xxxx公交车 | 青青草原一区二区 | av片在线观看网站 | 不卡中文字幕在线 | 国产处女| 铠甲勇士猎铠 | 青青草自拍视频 | 欧美激情黑白配 | 国产噜噜噜噜噜久久久久久久久 | 6080电视影片在线观看 | 欧美一区视频 | 亚洲第五页 | 冈本视频在线观看 | 久久精品国产亚洲av蜜臀色欲 | 日日噜噜噜夜夜爽爽狠狠视频97 | 蜜桃中文字幕 | 777精品伊人久久久久大香线蕉 | 国产精品网友自拍 | 校园春色 亚洲色图 | 四虎av网址 | www.日本在线视频 | 亚洲国产精一区二区三区性色 | 亚洲天堂麻豆 | 可以免费看av的网址 | 丁香花完整视频在线观看 | gv天堂gv无码男同在线观看 | 欧美日韩精品国产 | 在线观看 中文字幕 | 日日夜夜精品免费 | 欧美日韩在线中文字幕 | 色噜噜狠狠狠综合曰曰曰 | av在线激情 | 少妇饥渴放荡91麻豆 | 亚洲色图第一页 | 视频一二区| 国产偷人视频 | 中日精品一色哟哟 | 色婷婷国产精品综合在线观看 | 亚洲91久久 | 91网址入口 | 亚洲国产精品女人 | 在线精品一区二区三区 | 97毛片 | 午夜欧美视频 | 国产精品婷婷 | 欧美色激情 | 欧美男人又粗又长又大 | 亚洲青草| 大伊人网| 男人与雌性宠物交啪啪 | 国产jk精品白丝av在线观看 | 黄色a在线观看 | 国产成人无遮挡在线视频 | 香蕉尹人网| 亚洲精品久久久久久一区二区 | xxx国产| 免费激情 | 对白超刺激精彩粗话av | 国产男女猛烈无遮挡a片漫画 | 国产精品熟妇一区二区三区四区 | 青青青国产视频 | 久久女人天堂 | 麻豆精品一区二区三区 | 黄色中文视频 | 国产偷亚洲偷欧美偷精品 | 国产精品乱码一区二三区小蝌蚪 | 一区二区三区网 | 天天成人 | 色综合网址 | 中文字幕91 | 欧美一级xxx| 少妇诱惑av | 中文字幕一区二区久久人妻 | 久久亚洲第一 | 爱爱免费网站 | 欧美精品免费一区二区三区 | 美国少妇在线观看免费 | 亚洲综合五月天 | 91超碰在 | 国产成人精品视频一区二区 | 人人妻人人爽人人澡人人精品 | 国产精品一区二区入口九绯色 | 狠狠久久综合 | 污污网址在线观看 |