重新问:如何对控件的层次进行控制?(加上以前问的那次,一共150分,谁解决给谁) swing用的很少,但印象中好像不能进行多个JLabel相同位置之间的切换,可以只用一个JLabel,然后在你需要切换文字的时候,调用这个JLabel的setText()方法,应该一样能满足你的要求吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 唉~~ zjpangxie(又胡了)给你看张图就明白我的意思了http://www.impk.net/marquis/TRPGzone/maperror.jpg 下面这段代码我试过了,是有效的。你参照一下试试JTable如何。 void jButton2_actionPerformed(ActionEvent e) {jButton2.setVisible(false) ;jButton3.setVisible(false) ;jButton3.setVisible(true) ;jButton2.setVisible(true) ; } void jButton3_actionPerformed(ActionEvent e) { jButton2.setVisible(false) ; jButton3.setVisible(false) ; jButton2.setVisible(true) ;jButton3.setVisible(true) ; } ………无效--~而且,你提供的方法如果控件只有两个还好说七个八个就死定了> <(你看一下我的贴图,就知道了~) 变通下就可以了,你只要让一个刷新一下就行了,如: void jButton2_actionPerformed(ActionEvent e) {jButton2.setVisible(false) ;jButton2.setVisible(true) ; } void jButton3_actionPerformed(ActionEvent e) { jButton3.setVisible(false) ; jButton3.setVisible(true) ; }问题是要从JPanel来得到你是否点击哪个JLabel。你还可以考虑其他函数,如:updateUI(),revalidate() ,repaint()requestFocus(),甚至reshape都试试。 我这只是个思路,具体能否用到JLable我也不知道。那个JLabel里怎么贴图啊,这个我都还不会啊。给我一些代码,我也来试。不过可能要明天了,不早了。 再多说一句,JWindow这个控件本身就有一个函数叫做tofront(),它的作用就是当开了多个JWindow的时候,比如说jWindow1,jWindow2,jWindow3则jWindow1.tofront(),就能让jWindow1这个窗口提升到最前(即重叠时,它在最前面)。我现在就在寻找的就是这么一个函数,不过它针对的不是JWindow这样的容器,而是JLabel这样的控件…… 不知道楼主试验怎样,但我觉得:当设置为不可视时,你的其他图片将看不到(完全消失),我想你并不是想得到这样的效果.我想应该有这样的方法,但我不会,可有个笨笨的办法实现你的效果:再制作相同的四个图片(层次在现在的上面),平时隐藏了,如果单击某个,就将对应的在对应的位置上显示出来.楼主不错嘛,做做java游戏,羡慕. qiuwanbin(哈哈,我呀。) 》我这只是个思路,具体能否用到JLable我也不知道。》那个JLabel里怎么贴图啊,这个我都还不会啊。》给我一些代码,我也来试。不过可能要明天了,不早了。代码比较长,我把让JLabel上贴图的几个关键句子贴出来//获得当前路径String path=(System.getProperty("user.dir"));//获得图片文件夹路径String picPath=path+"\\images\\"//只要当前目录的images文件夹下有1.jpg,2.jpg,3.jpg即可lbChr1=new JLabel(new ImageIcon(facePath+"1.jpg"));lbChr2=new JLabel(new ImageIcon(facePath+"2.jpg"));lbChr3=new JLabel(new ImageIcon(facePath+"3.jpg")); 那你看看JWindow里怎么做的,自己继承做一个新类就是了 jlabel没有继承tofront()方法,不能用吧. JWindow是框架容器,和JFrame、JApplet是一个级别的,JLabel是控件比JPanel还要低一个级别……从大框架上就是不一样的啊 > <第一级别:JWindow,JFrame,JApplet第二级别:JPanel,JMenuBar第三级别:JTextPane,JButton,JLabel等等 》不知道楼主试验怎样,但我觉得:》当设置为不可视时,你的其他图片将看不到(完全消失),我想你并不是想得到这样的效果.》我想应该有这样的方法,但我不会,可有个笨笨的办法实现你的效果:》再制作相同的四个图片(层次在现在的上面),平时隐藏了,如果单击某个,就将对应的在对应的位置上显示出来.》楼主不错嘛,做做java游戏,羡慕.不是没想过这个法子。但是对于小批量的层次设置还是可以的,对于像我这样十几个几十个的大批量的层次设置就不行了 >.<设想一下十几个JLabel,要每一个层次都有相对应的实体存在还要判断会死人的 >_____________< 这个对你没有用,你涉及的是同控件的z-order 倒,我的图片还是出不来。开始我以为要gif,现在按你说的也出不来。:(((( 你也可以只设一个jlabel.当你切换时,动态变换它的位置和图片,不就ok了. 对就是深度问题(z-order) --有一个布局管理器叫CardLayout,好像就能设置里面的东西的显示层次……问题是我现在用的布局管理器是null,这样才能设置上面的JLabel随鼠标的拖动而移动…… 》倒,我的图片还是出不来。开始我以为要gif,现在按你说的也出不来。》:((((如果你是在非Window操作环境下,路径要有改动的里面的“\\”要改为“/”还有,jpg、gif都是Java默认可以直接使用的图片格式,不用专门解析 T.T这个问题那么高深么 >.<究竟怎么解决啊~ 不要设置为null,那样虽然方便,但以后可能会遇到更多的问题.那个CardLayout,需要你在每个Card上都有同样的图片,但order不同,象你的也需要十多个吧随鼠标的拖动而移动肯定有办法解决 我这个小程序的主要设计思路如下:几个JLabel上装载图片,每个JLabel可以随鼠标拖动而移动,(当发生重叠时,鼠标拖动的那个JLabel保持在最上方)()里的这句话就是我现在苦苦思索而没有实现的内容 >.< 1.只要点击一下,就可以在最上面了,不必一定要拖吧?2.jlabel在缺省时候将不响应鼠标事件.但有办法可以使他接受,因本人没有试过办法,不敢乱说 》1.只要点击一下,就可以在最上面了,不必一定要拖吧?》2.jlabel在缺省时候将不响应鼠标事件.但有办法可以使他接受,因本人没有试过办法,不敢乱说1、对。拖动一个控件的全过程实际上隐含了鼠标的pressed、moved、released这三个动作,我只要对控件的pressed进行监听,并且使其toFront()即可。问题是这个toFront()如何实现>_<2、嗯,我已经实现鼠标拖动了简略方法如下:public void mouseDragged(MouseEvent e) { //设置成只允许右键拖动 if((e.getModifiers() & InputEvent.BUTTON1_MASK) !=0) { int x = e.getX(); int y = e.getY(); //之所以这么繁琐是为了把鼠标定位在JLabel中心 lbChr[i].setLocation(lbChr[i].getX()+(x-lbChr[i].getWidth()/2)/2,lbChr[i].getY()+(y-lbChr[i].getHeight()/2)/2); } } 多谢多谢我自己也在翻找资料中 >____<没想到这个问题这么复杂。 考虑使用JButton,Border为line:jButton2.setBorder(BorderFactory.createLineBorder(Color.black));什么事件都不要抓。基本上能满足要求只是,鼠标在移动越界时,默认在上面那个也会显示上来,而默认在下面这个,当鼠标移出时,会显示上来。 1、经过一夜的奋战找到个控件,是控制层次用的JLayeredPane,将你的jlabel放到JLayeredPane中,一个对应一个,很方便的就能进行翻层次。2、tofront方法不是能被jlabel继承的,也就是说实现它很困难。3、感觉上,不必要将定位与jlabel的中心,实际上更简单的办法是用jbutton代替jlabel。 多谢诸位的帮助我用JLabel而不用JButton是有原因的:这个程序的界面我应用了L&F,调用的是当前系统的界面,如果在XP系统中,Button控件的界面已经被系统定义,我对它界面的更改无效(或者说更改起来会有点难度)。而且Button对鼠标的一些动作已经在Java内部定义好,更改起来也会有些问题。(比如说这个Pressed和Released的动画效果我就不希望有--)用Label就没这些问题,全部都可以由我自己控制……就是比较繁琐-0- qqbz(qqbz)多谢你的方法,已经实现了 ^ ^请到下面这个帖子签下,我好把分给你 *^ ^*http://expert.csdn.net/Expert/TopicView1.asp?id=2975712 moto外包和支付宝外包那个好? web.xml配置,请高人分析 求助:怎么读取指定IP的mib库,实现set,get,getnext等操作 完全没有思路 大哥大姐帮帮小弟吧 JTree展开后超出了JTree的框框,展开的东西看不到了,怎么加滚动条? 怎样实现向数据库表中添加内容?最好给段具体代码!谢谢!在线等! JApplet问题 struts问题,bean:write怎末换行? 到底怎么样的代码算是有效代码?请教了。。 怎样调用自定义类 请问哪里有JBUILDER的电子文档?谢谢 如果对控件的层次进行控制? 区域码转换问题!麻烦ggjj帮下忙!
zjpangxie(又胡了)
给你看张图就明白我的意思了http://www.impk.net/marquis/TRPGzone/maperror.jpg
void jButton2_actionPerformed(ActionEvent e) {
jButton2.setVisible(false) ;
jButton3.setVisible(false) ;jButton3.setVisible(true) ;
jButton2.setVisible(true) ;
} void jButton3_actionPerformed(ActionEvent e) {
jButton2.setVisible(false) ;
jButton3.setVisible(false) ; jButton2.setVisible(true) ;
jButton3.setVisible(true) ;
}
无效--~
而且,你提供的方法如果控件只有两个还好说
七个八个就死定了> <
(你看一下我的贴图,就知道了~)
void jButton2_actionPerformed(ActionEvent e) {
jButton2.setVisible(false) ;
jButton2.setVisible(true) ;
} void jButton3_actionPerformed(ActionEvent e) {
jButton3.setVisible(false) ;
jButton3.setVisible(true) ;
}
问题是要从JPanel来得到你是否点击哪个JLabel。
你还可以考虑其他函数,如:updateUI(),revalidate() ,repaint()
requestFocus(),甚至reshape都试试。
那个JLabel里怎么贴图啊,这个我都还不会啊。
给我一些代码,我也来试。不过可能要明天了,不早了。
当设置为不可视时,你的其他图片将看不到(完全消失),我想你并不是想得到这样的效果.
我想应该有这样的方法,但我不会,可有个笨笨的办法实现你的效果:
再制作相同的四个图片(层次在现在的上面),平时隐藏了,如果单击某个,就将对应的在对应的位置上显示出来.
楼主不错嘛,做做java游戏,羡慕.
》我这只是个思路,具体能否用到JLable我也不知道。
》那个JLabel里怎么贴图啊,这个我都还不会啊。
》给我一些代码,我也来试。不过可能要明天了,不早了。代码比较长,我把让JLabel上贴图的几个关键句子贴出来//获得当前路径
String path=(System.getProperty("user.dir"));
//获得图片文件夹路径
String picPath=path+"\\images\\"//只要当前目录的images文件夹下有1.jpg,2.jpg,3.jpg即可
lbChr1=new JLabel(new ImageIcon(facePath+"1.jpg"));
lbChr2=new JLabel(new ImageIcon(facePath+"2.jpg"));
lbChr3=new JLabel(new ImageIcon(facePath+"3.jpg"));
第二级别:JPanel,JMenuBar
第三级别:JTextPane,JButton,JLabel等等
》当设置为不可视时,你的其他图片将看不到(完全消失),我想你并不是想得到这样的效果.
》我想应该有这样的方法,但我不会,可有个笨笨的办法实现你的效果:
》再制作相同的四个图片(层次在现在的上面),平时隐藏了,如果单击某个,就将对应的在对应的位置上显示出来.
》楼主不错嘛,做做java游戏,羡慕.不是没想过这个法子。但是对于小批量的层次设置还是可以的,对于像我这样十几个几十个的大批量的层次设置就不行了 >.<设想一下十几个JLabel,要每一个层次都有相对应的实体存在还要判断会死人的 >_____________<
:((((
》:((((如果你是在非Window操作环境下,路径要有改动的里面的“\\”要改为“/”还有,jpg、gif都是Java默认可以直接使用的图片格式,不用专门解析
那个CardLayout,需要你在每个Card上都有同样的图片,但order不同,象你的也需要十多个吧
随鼠标的拖动而移动肯定有办法解决
2.jlabel在缺省时候将不响应鼠标事件.但有办法可以使他接受,因本人没有试过办法,不敢乱说
》2.jlabel在缺省时候将不响应鼠标事件.但有办法可以使他接受,因本人没有试过办法,不敢乱说1、对。拖动一个控件的全过程实际上隐含了鼠标的pressed、moved、released这三个动作,我只要对控件的pressed进行监听,并且使其toFront()即可。问题是这个toFront()如何实现>_<2、嗯,我已经实现鼠标拖动了
简略方法如下:
public void mouseDragged(MouseEvent e)
{
//设置成只允许右键拖动
if((e.getModifiers() & InputEvent.BUTTON1_MASK) !=0)
{
int x = e.getX();
int y = e.getY(); //之所以这么繁琐是为了把鼠标定位在JLabel中心
lbChr[i].setLocation(lbChr[i].getX()+(x-lbChr[i].getWidth()/2)/2,lbChr[i].getY()+(y-lbChr[i].getHeight()/2)/2);
}
}
Border为line:
jButton2.setBorder(BorderFactory.createLineBorder(Color.black));什么事件都不要抓。
基本上能满足要求只是,鼠标在移动越界时,默认在上面那个也会显示上来,
而默认在下面这个,当鼠标移出时,会显示上来。
2、tofront方法不是能被jlabel继承的,也就是说实现它很困难。
3、感觉上,不必要将定位与jlabel的中心,实际上更简单的办法是用jbutton代替jlabel。
多谢你的方法,已经实现了 ^ ^
请到下面这个帖子签下,我好把分给你 *^ ^*http://expert.csdn.net/Expert/TopicView1.asp?id=2975712