现像,1,如果把窗口初始化内容:setTitle("考勤管理系统1.0");
setSize(540,407);
setLocation(100,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);  
放在main()方内,按钮正常显示。2,但如果把上面的初始化内容放在构造方法内,运行的时候要用鼠标点一下才显示出来,不点就不出来。3,把上面的初始化内容放在构造方法内,并把iconbakButton=new ImageIcon("d:/Fengmian.png");注掉,运行的时候按钮又能正常显示了。我的目的是图像和按钮都同时正常显法,不知是哪里错了,请高手指点一下,谢谢!!!!全部代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;public class JFrameTest extends JFrame
{
private JButton bakButton,downButton,
exitButton,workButton,pepleButton,countButton;
private ImageIcon iconbakButton;
private JFrame jft;

public static void main(String[] args)
{
JFrameTest jft=new JFrameTest();
/*
jft.setTitle("考勤管理系统1.0");
jft.setSize(540,407);
jft.setLocation(100,100);
jft.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jft.setVisible(true);
jft.setResizable(false);
*/
}

public JFrameTest()
{
setTitle("考勤管理系统1.0");
setSize(540,407);
setLocation(100,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
showPane();
}

private void showPane()
{ Container cp=getContentPane();
iconbakButton=new ImageIcon("d:/Fengmian.png");
cp.setBackground(new Color(210,138,177));
cp.setLayout(null);
bakButton=new JButton();
bakButton.setBounds(0,0,358,409);
//bakButton.setBackground(new Color( 212, 158, 217));
bakButton.setIcon(iconbakButton);
cp.add(bakButton);

workButton=new JButton("上班统计");
workButton.setBounds(378,30,130,45);
workButton.setBackground(new Color( 212, 158, 217));
cp.add(workButton);

downButton=new JButton("下班统计");
downButton.setBounds(378,95,130,45);
downButton.setBackground(new Color( 212, 158, 217));
cp.add(downButton);

pepleButton=new JButton("员工登计");
pepleButton.setBounds(378,165,130,45);
pepleButton.setBackground(new Color( 212, 158, 217));
cp.add(pepleButton);

countButton=new JButton("统计情况");
countButton.setBounds(378,230,130,45);
countButton.setBackground(new Color( 212, 158, 217));
cp.add(countButton);

exitButton=new JButton("退出系统");
exitButton.setBounds(378,295,130,45);
exitButton.setBackground(new Color( 212, 158, 217));
cp.add(exitButton);

}
}

解决方案 »

  1.   

    调试通过,可以显示啊楼主为什么要把初始化都放在构造函数内呢
    最好放在main()内
      

  2.   

    抱歉,刚才调试的时候鼠标在窗体上
    现在看到楼主的问题了楼主请把如下代码位置坐调换setVisible(true); 
    setResizable(false); 
    showPane(); 替换成setResizable(false); 
    showPane();
    setVisible(true); 即setVisible(true);  在最后,也就是说最后调用显示,也就是JFrame 的 drawcomptent 的绘窗口方法
    另外:特别提醒楼主,尽量不要把这种对窗口本身初始化的操作放在构造函数中
    再造个方法,initial() 放初始化
    习惯问题,不容易像楼主一样出错
    你的代码也要别人来读的,如果写大了,自己都不知道到哪里初始化了,麻烦很大的
      

  3.   

    你这代码没什么特别啊 就是加了几个按钮进去 在哪设置title都是一样的 showpane和你的frame的title没有直接关系 怀疑是你环境的问题
      

  4.   

    setVisible(true); 放到showPanel()的后面。
    而且必须是放到后面的,他一直都是放到最后面的。2楼解释的很好!
      

  5.   

    你再试一下
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.event.*; 
    public class JFrameTest extends JFrame 

    private JButton bakButton,downButton, 
    exitButton,workButton,pepleButton,countButton; 
    private ImageIcon iconbakButton; 
    private JFrame jft; 
    public JFrameTest() 

    // setTitle("考勤管理系统1.0"); 
    // setSize(540,407); 
    // setLocation(100,100); 
    // setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    // setVisible(true); 
    // setResizable(false); 
    showPane(); 

    private void showPane() 


    Container cp=getContentPane(); 
    //iconbakButton=new ImageIcon("d:/Fengmian.png"); //括号里这样写好象不对,具体忘了
    cp.setBackground(new Color(210,138,177)); 
    cp.setLayout(null); 
    bakButton=new JButton(); 
    bakButton.setBounds(0,0,358,409); 
    //bakButton.setBackground(new Color( 212, 158, 217)); 
    bakButton.setIcon(iconbakButton); 
    cp.add(bakButton); 

    workButton=new JButton("上班统计"); 
    workButton.setBounds(378,30,130,45); 
    workButton.setBackground(new Color( 212, 158, 217)); 
    cp.add(workButton); 

    downButton=new JButton("下班统计"); 
    downButton.setBounds(378,95,130,45); 
    downButton.setBackground(new Color( 212, 158, 217)); 
    cp.add(downButton); 

    pepleButton=new JButton("员工登计"); 
    pepleButton.setBounds(378,165,130,45); 
    pepleButton.setBackground(new Color( 212, 158, 217)); 
    cp.add(pepleButton); 

    countButton=new JButton("统计情况"); 
    countButton.setBounds(378,230,130,45); 
    countButton.setBackground(new Color( 212, 158, 217)); 
    cp.add(countButton); 

    exitButton=new JButton("退出系统"); 
    exitButton.setBounds(378,295,130,45); 
    exitButton.setBackground(new Color( 212, 158, 217)); 
    cp.add(exitButton); 

    } public static void main(String[] args) 

    JFrameTest jft=new JFrameTest(); jft.setTitle("考勤管理系统1.0"); 
    jft.setSize(540,407); 
    jft.setLocation(100,100); 
    jft.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jft.setVisible(true); 
    jft.setResizable(false); }
    }
    JFrame为轻量级组件,它的界面由程序控制,有时会出现你的情况需要写刷新界面代码,但你的程序我试了一下没有出现此情况