为什么java语言中JFrame设置了背景色却看不见,而在Frame却可以看见
packagepackBbb;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclas...
package packBbb;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class app17_1
{
public static void main(String[] args)
{
JFrame frm=new JFrame("my first AWT program");
JLabel lab=new JLabel("hello java!");
frm.setSize(220,150);
frm.setBackground(Color.yellow);
frm.setLocation(250,250);
frm.add(lab);
frm.setVisible(true);
//frm.addWindowListener(new WindowAdapter(){
//public void windowClosing(WindowEvent e){System.exit(0);}});
}
}
以上程序背景色 不显示。
package packBbb;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class app17_1
{
public static void main(String[] args)
{
Frame frm=new Frame("my first AWT program");
Label lab=new Label("hello java!");
frm.setSize(220,150);
frm.setBackground(Color.yellow);
frm.setLocation(250,250);
frm.add(lab);
frm.setVisible(true);
//frm.addWindowListener(new WindowAdapter(){
//public void windowClosing(WindowEvent e){System.exit(0);}});
}
}
背景色能显示,为什么?
开发环境为eclipse,为什么没人回答呢? 展开
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class app17_1
{
public static void main(String[] args)
{
JFrame frm=new JFrame("my first AWT program");
JLabel lab=new JLabel("hello java!");
frm.setSize(220,150);
frm.setBackground(Color.yellow);
frm.setLocation(250,250);
frm.add(lab);
frm.setVisible(true);
//frm.addWindowListener(new WindowAdapter(){
//public void windowClosing(WindowEvent e){System.exit(0);}});
}
}
以上程序背景色 不显示。
package packBbb;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class app17_1
{
public static void main(String[] args)
{
Frame frm=new Frame("my first AWT program");
Label lab=new Label("hello java!");
frm.setSize(220,150);
frm.setBackground(Color.yellow);
frm.setLocation(250,250);
frm.add(lab);
frm.setVisible(true);
//frm.addWindowListener(new WindowAdapter(){
//public void windowClosing(WindowEvent e){System.exit(0);}});
}
}
背景色能显示,为什么?
开发环境为eclipse,为什么没人回答呢? 展开
6个回答
展开全部
Jframe和frame的区别:
区别1 :JFrame是javax.swing.JFrame的类,Frame是java.awt.Frame的类,jframe是jframe的升级版。
区别2:JFrame默认采用了FlowLayout布局管理器,你的组渗慧橘件在该布局管理器中被塞满整个frame,挡住了背景。就是说,实际上碧迅JFrame还是有背景的
一般用JFrame的时候要初始化一个JPanel,把组件放在JPanel里,然后把JPanel放到JFrame里,这样可以较好的控制组建位置等其他的东西。在这种方式下直接给JPanel设置setBackground就可以一直看到背景了
原因:
你注意看文档,文档里是这么说JFrame的update的:just calls paint(g).this method was overridden to prevent an unnecessary call to clear background.就是说是不刷新背景的。如果你想刷新背景,可以在JFrame上加个JPane,然后所有组丛团件都画在JPane上,通过repaint即可刷新。
你需要在jframe中套个jpanel:
区别1 :JFrame是javax.swing.JFrame的类,Frame是java.awt.Frame的类,jframe是jframe的升级版。
区别2:JFrame默认采用了FlowLayout布局管理器,你的组渗慧橘件在该布局管理器中被塞满整个frame,挡住了背景。就是说,实际上碧迅JFrame还是有背景的
一般用JFrame的时候要初始化一个JPanel,把组件放在JPanel里,然后把JPanel放到JFrame里,这样可以较好的控制组建位置等其他的东西。在这种方式下直接给JPanel设置setBackground就可以一直看到背景了
原因:
你注意看文档,文档里是这么说JFrame的update的:just calls paint(g).this method was overridden to prevent an unnecessary call to clear background.就是说是不刷新背景的。如果你想刷新背景,可以在JFrame上加个JPane,然后所有组丛团件都画在JPane上,通过repaint即可刷新。
你需要在jframe中套个jpanel:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
jframe.getContentPane().setBackground(color);先得到内容面板
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先得到内容面板在设置背景色
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
严格的说,JFrame没有布局管理器,只有它的内容窗格contentPane有布局管轿虚友理器闭槐,誉档并且默认是BorderLayout布局管理器。而FlowLayout是JPane的默认布局管理器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询