java程序中,图片按钮当鼠标滑过之后才会显示,是什么原因?
试过:框架.setVisible(true);框架.validate();我也没有背景图片;只是按钮是带图片按钮;求大神!百度的都看过了JFramefr=newJFram...
试过:框架.setVisible(true);
框架.validate();
我也没有背景图片;只是按钮是带图片按钮;
求大神!百度的都看过了
JFrame fr=new JFrame();
fr.setSize(400,500);
fr.setLayout(null);
fr.setVisible(true);
JButton[] pic =new JButton[5];
for(int i=0;i<3;i++){
pic[i]=new JButton((new ImageIcon("tupian/0.gif")));
pic[i].setBounds(100, 100+50*i, 50, 50);
fr.add(pic[i]);
Thread.sleep(500);
} 展开
框架.validate();
我也没有背景图片;只是按钮是带图片按钮;
求大神!百度的都看过了
JFrame fr=new JFrame();
fr.setSize(400,500);
fr.setLayout(null);
fr.setVisible(true);
JButton[] pic =new JButton[5];
for(int i=0;i<3;i++){
pic[i]=new JButton((new ImageIcon("tupian/0.gif")));
pic[i].setBounds(100, 100+50*i, 50, 50);
fr.add(pic[i]);
Thread.sleep(500);
} 展开
2个回答
展开全部
因为每次swing窗口必须刷新才出新的东西,而setVisible(true);就是一个刷新的过程,你只有尽量把setVisible(true);这句话拿到外面来或者写在最后。
就像
public static void main(String[] args) {
new JFrame1();
}
public JFrame1(){
setVisible(true);
...
这样是不行的,要写成这样:
public static void main(String[] args) {
new JFrame1().setVisible(true);
}
public JFrame1(){
...
就像
public static void main(String[] args) {
new JFrame1();
}
public JFrame1(){
setVisible(true);
...
这样是不行的,要写成这样:
public static void main(String[] args) {
new JFrame1().setVisible(true);
}
public JFrame1(){
...
更多追问追答
追问
JFrame fr=new JFrame();
fr.setSize(400,500);
fr.setLayout(null);
fr.setVisible(true);
JButton[] pic =new JButton[3];
字数超出,贴在下面补充。。
大神,你说我该怎么改?
追答
你写个JFrame1(),把原先fr的内容都给放进去
public class JFrame1 extends JFrame{
public static void main(String[] args) {
JFrame fr=new JFrame1();
fr.setVisible(true);
}
public JFrame1(){
this.setSize(400,500);//this可省略
setLayout(null);
setVisible(true);
JButton[] pic =new JButton[5];
for(int i=0;i<3;i++){
pic[i]=new JButton((new ImageIcon("tupian/0.gif")));
pic[i].setBounds(100, 100+50*i, 50, 50);
this.add(pic[i]);
Thread.sleep(500);
}
}
}
你试试,不行就按照上面的来
展开全部
先setVisible(false);
在setVisible(true);
在setVisible(true);
追问
这样是可以,但是,我每显示一个控件,窗口就会闪烁一次,怎样不闪,还能达到目的??
追答
package test;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class GUIThread {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final JFrame jf = new JFrame("TestGUIThread"); //需要在内部类使用,又不传入内部类,只有定义为终态
jf.setSize(300, 400);
jf.setLayout(new GridLayout(5,5)); // 设置样式为5*5的格子
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true); //先启动主线程显示主界面
//启动一个子线程加入按钮
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
for (int i=0;i<10;i++){ //循环10次
try {
Thread.sleep(1000); //延时1秒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jf.add(new JButton(""+i)); //加入10个按钮
//下面这两句就是刷新界面的
jf.setVisible(false);
jf.setVisible(true);
}
}
}.start();
}
}
给你发个例子参照吧,你的代码不全,不好改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询