1. 每個JLable是否只能用一次? 如果想重复顯示一幅圖, 有什么辦法呢?
2. 怎樣在JPanel里用新的圖片覆蓋原來的圖片?
3. 如果用FlowLayout, 圖是不是一幅跟著一幅出來? 能不能指定放置圖片的位置?
謝謝~
6 个解决方案
#1
1.JLabel是可以反复使用的,每次都用label = new JLabel(...),然后添加到容器中就行,但是前提是你以后都不会再对此label进行更改,否则只对最后添加的那个有效,之前添加的是无法更改内容的。
2.这得看你是用什么方法将图片添加进JPanel的了,如果是用JPanel的paintComponent的方法直接绘制的话那你重新载入新图片然后调用JPanel的repaint方法就行;如果是用JLabel等组件放置图片的话,直接用JLabel.setIcon(new ImageIcon("图片名"));就行。
3.FlowLayout是无法指定位置的,组件会更据JFrame的大小逐个出来,以行序为优先。如果是手写建议用BorderLayout或BoxLayout等较易调试的布局方法
2.这得看你是用什么方法将图片添加进JPanel的了,如果是用JPanel的paintComponent的方法直接绘制的话那你重新载入新图片然后调用JPanel的repaint方法就行;如果是用JLabel等组件放置图片的话,直接用JLabel.setIcon(new ImageIcon("图片名"));就行。
3.FlowLayout是无法指定位置的,组件会更据JFrame的大小逐个出来,以行序为优先。如果是手写建议用BorderLayout或BoxLayout等较易调试的布局方法
#2
同意一楼,
#3
前面两个问题就不说了,说说第三个问题
3. 如果用FlowLayout, 圖是不是一幅跟著一幅出來? 能不能指定放置圖片的位置?
前半个问题答案是肯定的;后半个问题是可以的,你首先需要将布局设置为null,然后就可以指定坐标跟大小了,具体方法是setBounds(x,y,width,height);
如果要实现更复杂的布局来控制,则需要用到GroupLayout,这个可以使用netbeans的GUI生成器帮你完成,它可以让你的控件轻松放到界面的任意位置.
3. 如果用FlowLayout, 圖是不是一幅跟著一幅出來? 能不能指定放置圖片的位置?
前半个问题答案是肯定的;后半个问题是可以的,你首先需要将布局设置为null,然后就可以指定坐标跟大小了,具体方法是setBounds(x,y,width,height);
如果要实现更复杂的布局来控制,则需要用到GroupLayout,这个可以使用netbeans的GUI生成器帮你完成,它可以让你的控件轻松放到界面的任意位置.
#4
一楼纯碎瞎扯淡,label = new JLabel(),都这样了还叫重复使用啊,拜托,这就是每次在重新创建一个实例,只不过变量指向变了而已。不学无术还来误导别人,晕。如果一个创建好的容器如楼主所说的JLabel或者JPanel都可以调用如remove之类的方法把之前添加的组件移除。而且就算是FlowLayout依然可以指定位置,至少可以对其排列顺序进行限制,否则你以为FlowLayout.RIGHT以及CENTER和LEFT常量是干嘛用的.林子大了,什么鸟都有啊真是。
#5
呵呵,咱也新手,看高手献策
#6
同意小草的。组件可以重复使用用的时候用add()方法,不用了用remove()去掉,
#1
1.JLabel是可以反复使用的,每次都用label = new JLabel(...),然后添加到容器中就行,但是前提是你以后都不会再对此label进行更改,否则只对最后添加的那个有效,之前添加的是无法更改内容的。
2.这得看你是用什么方法将图片添加进JPanel的了,如果是用JPanel的paintComponent的方法直接绘制的话那你重新载入新图片然后调用JPanel的repaint方法就行;如果是用JLabel等组件放置图片的话,直接用JLabel.setIcon(new ImageIcon("图片名"));就行。
3.FlowLayout是无法指定位置的,组件会更据JFrame的大小逐个出来,以行序为优先。如果是手写建议用BorderLayout或BoxLayout等较易调试的布局方法
2.这得看你是用什么方法将图片添加进JPanel的了,如果是用JPanel的paintComponent的方法直接绘制的话那你重新载入新图片然后调用JPanel的repaint方法就行;如果是用JLabel等组件放置图片的话,直接用JLabel.setIcon(new ImageIcon("图片名"));就行。
3.FlowLayout是无法指定位置的,组件会更据JFrame的大小逐个出来,以行序为优先。如果是手写建议用BorderLayout或BoxLayout等较易调试的布局方法
#2
同意一楼,
#3
前面两个问题就不说了,说说第三个问题
3. 如果用FlowLayout, 圖是不是一幅跟著一幅出來? 能不能指定放置圖片的位置?
前半个问题答案是肯定的;后半个问题是可以的,你首先需要将布局设置为null,然后就可以指定坐标跟大小了,具体方法是setBounds(x,y,width,height);
如果要实现更复杂的布局来控制,则需要用到GroupLayout,这个可以使用netbeans的GUI生成器帮你完成,它可以让你的控件轻松放到界面的任意位置.
3. 如果用FlowLayout, 圖是不是一幅跟著一幅出來? 能不能指定放置圖片的位置?
前半个问题答案是肯定的;后半个问题是可以的,你首先需要将布局设置为null,然后就可以指定坐标跟大小了,具体方法是setBounds(x,y,width,height);
如果要实现更复杂的布局来控制,则需要用到GroupLayout,这个可以使用netbeans的GUI生成器帮你完成,它可以让你的控件轻松放到界面的任意位置.
#4
一楼纯碎瞎扯淡,label = new JLabel(),都这样了还叫重复使用啊,拜托,这就是每次在重新创建一个实例,只不过变量指向变了而已。不学无术还来误导别人,晕。如果一个创建好的容器如楼主所说的JLabel或者JPanel都可以调用如remove之类的方法把之前添加的组件移除。而且就算是FlowLayout依然可以指定位置,至少可以对其排列顺序进行限制,否则你以为FlowLayout.RIGHT以及CENTER和LEFT常量是干嘛用的.林子大了,什么鸟都有啊真是。
#5
呵呵,咱也新手,看高手献策
#6
同意小草的。组件可以重复使用用的时候用add()方法,不用了用remove()去掉,