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);
}
}
10 个解决方案
#1
调试通过,可以显示啊
楼主为什么要把初始化都放在构造函数内呢
最好放在main()内
楼主为什么要把初始化都放在构造函数内呢
最好放在main()内
#2
抱歉,刚才调试的时候鼠标在窗体上
现在看到楼主的问题了
楼主请把如下代码位置坐调换
setVisible(true);
setResizable(false);
showPane();
替换成
setResizable(false);
showPane();
setVisible(true);
即setVisible(true); 在最后,也就是说最后调用显示,也就是JFrame 的 drawcomptent 的绘窗口方法
另外:特别提醒楼主,尽量不要把这种对窗口本身初始化的操作放在构造函数中
再造个方法,initial() 放初始化
习惯问题,不容易像楼主一样出错
你的代码也要别人来读的,如果写大了,自己都不知道到哪里初始化了,麻烦很大的
现在看到楼主的问题了
楼主请把如下代码位置坐调换
setVisible(true);
setResizable(false);
showPane();
替换成
setResizable(false);
showPane();
setVisible(true);
即setVisible(true); 在最后,也就是说最后调用显示,也就是JFrame 的 drawcomptent 的绘窗口方法
另外:特别提醒楼主,尽量不要把这种对窗口本身初始化的操作放在构造函数中
再造个方法,initial() 放初始化
习惯问题,不容易像楼主一样出错
你的代码也要别人来读的,如果写大了,自己都不知道到哪里初始化了,麻烦很大的
#3
谢谢2楼的建议!
#4
你这代码没什么特别啊 就是加了几个按钮进去 在哪设置title都是一样的 showpane和你的frame的title没有直接关系 怀疑是你环境的问题
#5
setVisible(true); 放到showPanel()的后面。
而且必须是放到后面的,他一直都是放到最后面的。
2楼解释的很好!
而且必须是放到后面的,他一直都是放到最后面的。
2楼解释的很好!
#6
2楼的说法很正确,我在电脑上调试,没有出现这样的情况了。感谢大家关注!
#7
你说的很正常,你没有刷新
#8
你再试一下
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为轻量级组件,它的界面由程序控制,有时会出现你的情况需要写刷新界面代码,但你的程序我试了一下没有出现此情况
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为轻量级组件,它的界面由程序控制,有时会出现你的情况需要写刷新界面代码,但你的程序我试了一下没有出现此情况
#9
呵呵,我们老师刚讲了这个问题的,现在巩固了
#10
好象是先都设置好了,最后才是显示,逻辑问题,学习了。。。
#1
调试通过,可以显示啊
楼主为什么要把初始化都放在构造函数内呢
最好放在main()内
楼主为什么要把初始化都放在构造函数内呢
最好放在main()内
#2
抱歉,刚才调试的时候鼠标在窗体上
现在看到楼主的问题了
楼主请把如下代码位置坐调换
setVisible(true);
setResizable(false);
showPane();
替换成
setResizable(false);
showPane();
setVisible(true);
即setVisible(true); 在最后,也就是说最后调用显示,也就是JFrame 的 drawcomptent 的绘窗口方法
另外:特别提醒楼主,尽量不要把这种对窗口本身初始化的操作放在构造函数中
再造个方法,initial() 放初始化
习惯问题,不容易像楼主一样出错
你的代码也要别人来读的,如果写大了,自己都不知道到哪里初始化了,麻烦很大的
现在看到楼主的问题了
楼主请把如下代码位置坐调换
setVisible(true);
setResizable(false);
showPane();
替换成
setResizable(false);
showPane();
setVisible(true);
即setVisible(true); 在最后,也就是说最后调用显示,也就是JFrame 的 drawcomptent 的绘窗口方法
另外:特别提醒楼主,尽量不要把这种对窗口本身初始化的操作放在构造函数中
再造个方法,initial() 放初始化
习惯问题,不容易像楼主一样出错
你的代码也要别人来读的,如果写大了,自己都不知道到哪里初始化了,麻烦很大的
#3
谢谢2楼的建议!
#4
你这代码没什么特别啊 就是加了几个按钮进去 在哪设置title都是一样的 showpane和你的frame的title没有直接关系 怀疑是你环境的问题
#5
setVisible(true); 放到showPanel()的后面。
而且必须是放到后面的,他一直都是放到最后面的。
2楼解释的很好!
而且必须是放到后面的,他一直都是放到最后面的。
2楼解释的很好!
#6
2楼的说法很正确,我在电脑上调试,没有出现这样的情况了。感谢大家关注!
#7
你说的很正常,你没有刷新
#8
你再试一下
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为轻量级组件,它的界面由程序控制,有时会出现你的情况需要写刷新界面代码,但你的程序我试了一下没有出现此情况
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为轻量级组件,它的界面由程序控制,有时会出现你的情况需要写刷新界面代码,但你的程序我试了一下没有出现此情况
#9
呵呵,我们老师刚讲了这个问题的,现在巩固了
#10
好象是先都设置好了,最后才是显示,逻辑问题,学习了。。。