解决方案 »
- 文本分类中新的待分类文本的特征词和权重如何确定?
- java调用VC写的DLL,如何传递参数
- 如何在一个登陆窗体包中,登陆成功时让主界面的添加按钮等组件进行可用。
- 有个Applet程序可以运行但按按钮没反映 在后面的专门 debug DOS窗口中按按钮时也没debug出来请帮我看看 谢谢
- 学 java 是不是一定要学 c ,听说想进大公司,必须都得精通 C . 我们学校不教这个.
- 看原代码FileSystem.java时看到奇怪(小弟太菜,只能用"奇怪")的static的用法,请大家帮忙解释一下,谢谢!
- 君子之交淡若水,我没有多分送给大家了,请别介意。想与各位交个朋友,谁会VRML请留下你的联系方式好吗?还有怎样把自己编写的类导入jbui
- SQL Server 2000 中文版下载分享
- 初学java,先散一个分!顺便提一个很菜的问题!
- 大家快来帮帮我,关于JAVA的类变量:一定在定义成STATIC变量(即静态变量)吗?
- swing输出中文的问题
- 一道java算法题,测试你是否会使用java正则表达式
你自己用的布局就不对,当然覆盖了,你在最后添加了一个panel用BorderLayout,怎么会不覆盖??
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;public class MainUi extends JPanel implements ActionListener
{
protected JTextField id, psw;
protected JButton ok, register, exit;
protected JLabel idl, pswl, imgl;
protected static JLabel imgpanel;
protected ImageIcon image;
public static JPanel login;//这里改成static 类中可使用
public MainUi()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
image = new ImageIcon("D:\\A.jpg");
imgpanel = new JLabel(image);
id = new JTextField(60);
id.setActionCommand("ID");
idl = new JLabel("ID :");
idl.setLabelFor(id); psw = new JTextField(60);
psw.setActionCommand("password"); pswl = new JLabel("PassWord: ");
pswl.setLabelFor(psw); ok = new JButton("OK");
register = new JButton("REGISTER");
exit = new JButton("EXIT"); login = new JPanel();
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
login.setLayout(gridbag);// imgl.setBounds(0, 0, imgIcon.getIconWidth(), imgIcon.getIconHeight());
// login.setOpaque(false); JLabel[] labels = { idl, pswl };
JTextField[] textFields = { id, psw };
addLabelTextRows(labels, textFields, gridbag, login); c.gridwidth = GridBagConstraints.REMAINDER; // last
c.anchor = GridBagConstraints.WEST;
c.weightx = 1.0; login.setBorder(BorderFactory.createCompoundBorder(BorderFactory
.createTitledBorder("Text Fields"), BorderFactory
.createEmptyBorder(5, 5, 5, 5)));
// add(login, BorderLayout.CENTER); } private void addLabelTextRows(JLabel[] labels, JTextField[] textFields,
GridBagLayout gridbag, Container container)
{
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.EAST;
int numLabels = labels.length; for (int i = 0; i < numLabels; i++)
{
c.gridwidth = GridBagConstraints.RELATIVE; // next-to-last
c.fill = GridBagConstraints.NONE; // reset to defau
container.add(labels[i], c); c.gridwidth = GridBagConstraints.REMAINDER; // end row
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1.0;
container.add(textFields[i], c);
}
} @Override
public void actionPerformed(ActionEvent arg0)
{ } public static void createGUI()
{
JFrame frame = new JFrame("Plants and Zombies");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new mainUi());
frame.getContentPane().add(imgpanel,BorderLayout.NORTH);
frame.getContentPane().add(login,BorderLayout.SOUTH);//在这加login
// frame.getLayeredPane().add(imgpanel, new Integer(Integer.MIN_VALUE));
frame.pack();
frame.setSize(800, 600);
frame.setVisible(true);
} public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
UIManager.put("swing.boldMetal", Boolean.FALSE);
createGUI();
}
});
}
}
为什么不管用啊。Y.Y
我们应该以一个JPanel作为背景,然后把图片回到那上边。
下面是一个示例代码,仅供参考,希望对你有用处。public class ChessPanel extends JPanel{//继承了JPanelpublic void paintComponent(Graphics g){
super.paintComponent(g);
Toolkit kit=Toolkit.getDefaultToolkit();
Image img=kit.getImage("棋盘.jpg");//得到图片
g.drawImage(img, 0,0, null);//往JPanel上绘制图片
repaint();}
当然你需要在Main方法中生成一个这样的对象。大体就是这样,去试一下吧。祝你成功~~~~
重写一下JPanel的paintComponent就好了,另外你下面createGUIimport java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;public class MainUi extends JPanel implements ActionListener
{
protected JTextField id, psw;
protected JButton ok, register, exit;
protected JLabel idl, pswl, imgl;
/**
* 因为原来你原来就是实例变量而且不是private修饰的
* 所以我没有改成createGUI方法里的局部变量
* 因为下面要用所以image加了static修饰
*/
protected static JLabel imgpanel;
protected static ImageIcon image; public MainUi()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
id = new JTextField(60);
id.setActionCommand("ID");
idl = new JLabel("ID :");
idl.setLabelFor(id); psw = new JTextField(60);
psw.setActionCommand("password"); pswl = new JLabel("PassWord: ");
pswl.setLabelFor(psw); ok = new JButton("OK");
register = new JButton("REGISTER");
exit = new JButton("EXIT"); JPanel login = new JPanel();
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
login.setLayout(gridbag);// imgl.setBounds(0, 0, imgIcon.getIconWidth(), imgIcon.getIconHeight());
// login.setOpaque(false); JLabel[] labels = { idl, pswl };
JTextField[] textFields = { id, psw };
addLabelTextRows(labels, textFields, gridbag, login); c.gridwidth = GridBagConstraints.REMAINDER; // last
c.anchor = GridBagConstraints.WEST;
c.weightx = 1.0; login.setBorder(BorderFactory.createCompoundBorder(BorderFactory
.createTitledBorder("Text Fields"), BorderFactory
.createEmptyBorder(5, 5, 5, 5)));
add(login, BorderLayout.CENTER); } private void addLabelTextRows(JLabel[] labels, JTextField[] textFields,
GridBagLayout gridbag, Container container)
{
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.EAST;
int numLabels = labels.length; for (int i = 0; i < numLabels; i++)
{
c.gridwidth = GridBagConstraints.RELATIVE; // next-to-last
c.fill = GridBagConstraints.NONE; // reset to defau
container.add(labels[i], c); c.gridwidth = GridBagConstraints.REMAINDER; // end row
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1.0;
container.add(textFields[i], c);
}
} @Override
public void actionPerformed(ActionEvent arg0)
{ }
/**
* 这里重写了JPanel的paintComponent方法,目的是把图片画上去
*/
protected void paintComponent(Graphics g) {
if (ui != null) {
Graphics scratchGraphics = (g == null) ? null : g.create();
try {
ui.update(scratchGraphics, imgpanel);
}
finally {
scratchGraphics.dispose();
}
}
} public static void createGUI()
{
JFrame frame = new JFrame("Plants and Zombies");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
image = new ImageIcon("D://java/PZ/image/bg.jpg");
imgpanel = new JLabel(image);
frame.getLayeredPane().add(imgpanel, new Integer(Integer.MIN_VALUE));
imgpanel.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); //这里不要漏掉
MainUi mainUi=new MainUi();
frame.getContentPane().add(mainUi);
((JPanel)frame.getContentPane()).setOpaque(false);
//frame.pack(); 既然下面设置了尺寸干嘛还要pack一下?
frame.setSize(800, 600);
frame.setVisible(true);
} public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
UIManager.put("swing.boldMetal", Boolean.FALSE);
createGUI();
}
});
}
}
import Java.awt.*;
import Javax.swing.*;
public class TestBackgroundColor extends JFrame
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
TestBackgroundColor tbc = new TestBackgroundColor();
tbc.setVisible(true);
}
private JPanel imagePanel;
private ImageIcon background;
public TestBackgroundColor()
{
background = new ImageIcon("渐变背景14.png");//背景图片
JLabel label = new JLabel(background);//把背景图片显示在一个标签里面
//把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0,0,background.getIconWidth(),background.getIconHeight());
//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel)this.getContentPane();
imagePanel.setOpaque(false);
//内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
imagePanel.add(new JButton("测试按钮"));
this.getLayeredPane().setLayout(null);
//把背景图片添加到分层窗格的最底层作为背景
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(background.getIconWidth(),background.getIconHeight());
this.setVisible(true);
}
}
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class TestBackgroundColor extends JFrame
{
private JPanel imagePanel;
private ImageIcon background;
public TestBackgroundColor(){
background = new ImageIcon("D://My Documents//图//谭健新//111.jpg");//背景图片
JLabel label = new JLabel(background);//把背景图片显示在一个标签里面
//把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0,0,background.getIconWidth(),background.getIconHeight());
//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel)this.getContentPane();
imagePanel.setOpaque(false);
//内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
imagePanel.add(new JButton("测试按钮"));
this.getLayeredPane().setLayout(null);
//把背景图片添加到分层窗格的最底层作为背景
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(background.getIconWidth(),background.getIconHeight());
this.setVisible(true);
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
TestBackgroundColor tbc = new TestBackgroundColor();
//tbc.setVisible(true);
}
}
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class TestBackgroundColor extends JFrame
{
private JPanel imagePanel;
private ImageIcon background;
public TestBackgroundColor(){
background = new ImageIcon("D://My Documents//图//谭健新//111.jpg");//背景图片
JLabel label = new JLabel(background);//把背景图片显示在一个标签里面
//把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0,0,background.getIconWidth(),background.getIconHeight());
//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel)this.getContentPane();
imagePanel.setOpaque(false);
//内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
imagePanel.add(new JButton("测试按钮"));
this.getLayeredPane().setLayout(null);
//把背景图片添加到分层窗格的最底层作为背景
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(background.getIconWidth(),background.getIconHeight());
this.setVisible(true);
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
TestBackgroundColor tbc = new TestBackgroundColor();
//tbc.setVisible(true);
}
}
public static void createGUI()
{
JFrame frame = new JFrame("Plants and Zombies");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
image = new ImageIcon("D://java/PZ/image/bg.jpg");
imgpanel = new JLabel(image);
frame.getLayeredPane().add(imgpanel, new Integer(Integer.MIN_VALUE));
imgpanel.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); //这里不要漏掉
MainUi mainUi=new MainUi();
frame.setContentPane(mainUi);
((JPanel)frame.getContentPane()).setOpaque(false);
//frame.pack(); 既然下面设置了尺寸干嘛还要pack一下?
frame.setSize(800, 600);
frame.setVisible(true);
}