① java窗口的背景颜色
因为JFrame窗口,其实从下到上分为好几层:RootPane LayeredPane ContentPane GlassPane
其中最上面的GlassPane是透明的。所以设置背内景色,需要设置在容ContentPane上才能显示。
② JAVA事件处理,改变窗体背景颜色...
改变来不了颜色是因为你源上面的那个程序在主窗口上又加了一个Panel,而你去改变的却是主窗口的背景色,你可以把按钮直接这样写:con.add(redButton);……去掉panel,然后在actionPerformed方法中这样写:frame.getContentPane().setBackground(backgroundcolor);或者你去改变panel的背景色。
③ 在JAVA里,怎么利用一个单独的类生成的窗体里的按钮控制另一个主窗体的背景颜色。
写过一个类似的java程序,效果图,如下, 思路分享到后面.
实现的方法很多专.代码比较乱,所以提供几种属思路:
可以采用MVC结构, 使用Controller 来控制 窗口 的颜色进行改变
也可以使用带有返回值的对话框(弹出框),用返回值来控制窗口的背景颜色
也可以把主窗口当成参数传入 新的窗口里, 然后在新的窗口里点击按钮时,改变主窗口的背景色
也可以用一个配置文件作为桥梁, 当在新的窗口里设置背景颜色,等参数时 修改配置文件.然后主窗口读取配置文件, 来修改背景色(可能需要 重启才能改变外观)
使用JavaFX来替换Swing框架, 因为JavaFX更换背景,变更外观很方便,就是替换CSS文件即可
④ 请问java JFrame窗体 怎样设置背景颜色和背景图片
importjava.awt.Color;望采纳
importjava.awt.Graphics;
importjava.awt.Image;
importjava.awt.Toolkit;
importjavax.swing.JFrame;
publicclassMainextendsJFrame{
Imageimage;
publicMain(){
image=Toolkit.getDefaultToolkit().getImage("B.jpg");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setSize(400,400);
this.setTitle("背景测试");
setBackground(Color.BLACK);
/*设置背景颜色,但是底下重写的paint函数把整个窗口覆盖了所以看不出,注释掉下面的代码就可以看见黑色的窗口了*/
}
publicstaticvoidmain(Stringargs[]){
newMain();
}
@Override
publicvoidpaint(Graphicsg){
//TODOAuto-generatedmethodstub
super.paint(g);
g.drawImage(image,0,0,400,400,this);
}
}
⑤ java 中怎样设置窗口的颜色
调用需要设置颜色的控件的setBackgroud();方法就可以了。
但是设置JFrame和的背景色,一般就是下面的做法
JFrame frame = new JFrame();
frame.setBackground(Color.Red);
JLabel l = new JLabel();
l.setBackground(Color.Yellow);
frame.add(l);
结果根本就没有反应。这是由于Swing跟AWT有千丝万缕的联系,它既要支持AWT又要有自己新的体系,所以呢,这个如果对于AWT中的Frame是可以直接通过setBackground来设置背景色,但是对于JFrame则不可以,应该采用下面的方法:
JFrame frame = new JFrame();
frame.getContentPane().setBackground(Color.Red);
而对于JLabel来说则要设置JLabel为不透明的才行,即
JLabel comp = new JLabel(value);
comp.setBackground(color);
comp.setOpaque(true);
这句代码frame.setBackground(Color.Red);
改变的是框架的颜色,框架的上面还有窗格,所以你要改变窗格的颜色才可以侧低改变框架的颜色
在主函数里加Containerframe.getContentPane()意思是获得窗格
setBackground(Color.Red);改变窗格颜色
另外再附一段背景颜色渐变的代码
运行示意图如下:
importjava.awt.Color;
importjava.awt.GradientPaint;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjavax.swing.JPanel;
importjava.awt.BorderLayout;
importjava.awt.EventQueue;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
classShadePanelextendsJPanel{
=-2644424271663261406L;
publicShadePanel(){
super();
setLayout(null);
}
@Override
protectedvoidpaintComponent(Graphicsg1){//重写绘制组件外观
Graphics2Dg=(Graphics2D)g1;
super.paintComponent(g);//执行超类方法
intwidth=getWidth();//获取组件大小
intheight=getHeight();
//创建填充模式对象
GradientPaintpaint=newGradientPaint(0,0,Color.CYAN,0,height,
Color.MAGENTA);
g.setPaint(paint);//设置绘图对象的填充模式
g.fillRect(0,0,width,height);//绘制矩形填充控件界面
}
}
{
=4693799019369193520L;
privateJPanelcontentPane;
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
ShadeBackgroundImageframe=newShadeBackgroundImage();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
publicShadeBackgroundImage(){
setTitle("背景为渐变色的主界面");//设置窗体标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,450,300);
contentPane=newJPanel();//创建内容面板
contentPane.setLayout(newBorderLayout(0,0));
setContentPane(contentPane);
ShadePanelshadePanel=newShadePanel();//创建渐变背景面板
contentPane.add(shadePanel,BorderLayout.CENTER);//添加面板到窗体内容面板
}
}
⑥ java窗口背景颜色怎么设定用setBackground()好像不行,请大侠指教!
你好!
首先,你说的Java窗口是指JFrame或者Frame
其次,你说的窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Colorcolor)方法设置后显示出来的颜色。其实,你的想法是正确的,但是我想提醒你的是,你没搞明白JFrame的显示机制。在你直接调用这个方法后,你的确设置了背景颜色,而你看到的却不是直接的JFrame或者Frame,而是JFrame.getContentPane().而JFrame上的contentPane默认是Color.WHITE的,所以,无论你对JFrame或者Frame怎么设置背景颜色,你看到的都只是contentPane.
最后,讲解决办法:
办法A:在完成初始化,调用getContentPane()方法得到一个contentPane容器,然后将其设置为不可见,即setVisible(false)。这样,你就可以看到JFrame的庐山真面貌啦!
核心代码this.getContentPane().setVisible(false);//得到contentPane容器,设置为不可见
实例完整代码如下:
/*
*TestJFrameBGColor.java
*
*Createdon2011-5-8,0:21:20
*/
packagetestjframebgcolor;
importjava.awt.Color;
/**
*
*@author叶科良
*/
.swing.JFrame{
/***/
publicTestJFrameBGColor(){
initComponents();
this.getContentPane().setVisible(false);//得到contentPane容器,设置为不可见
}
/**
*initializetheform.
*WARNING:DoNOTmodifythiscode.Thecontentofthismethodis
*.
*/
@SuppressWarnings("unchecked")
//<editor-folddefaultstate="collapsed"desc="GeneratedCode">
privatevoidinitComponents(){
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.application.ResourceMapresourceMap=org.jdesktop.application.Application.getInstance(testjframebgcolor.TestJFrameBGColorApp.class).getContext().getResourceMap(TestJFrameBGColor.class);
setBackground(resourceMap.getColor("Form.background"));//NOI18N
setName("Form");//NOI18N
javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,400,Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,300,Short.MAX_VALUE)
);
pack();
}//</editor-fold>
/**
*@
*/
publicstaticvoidmain(Stringargs[]){
java.awt.EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
newTestJFrameBGColor().setVisible(true);
}
});
}
//Variablesdeclaration-donotmodify
//Endofvariablesdeclaration
}
方法B:将contentPane的颜色设置为你想要的颜色,而不是对JFrame本身设置,
核心代码:this.getContentPane().setBackground(Color.red);//设置contentPane为红色
将核心代码替换方法A核心代码即可实现
方法C:为JFrame添加一个Panel或者JLabel等其他组件,设置其颜色为你想要的颜色,然后将其覆盖JFrame窗口即可