1.首先一个小错误,这些代码(包括你建立第一个JFrame的代码)最好都放到Swing的线程去,不然可能会偶尔发生意外错误。就是这样:SwingUtilities.invokeLater(new Runnable() {@Override public void run() {...在这里写的代码会在Swing线程又叫做EDT里执行...} });
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、陆丰网站维护、网站推广。
2.Swing里可以用LayoutManager,个人感觉比你一个一个手动设置Bound方便和灵活。
3.然后,一般改成:fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)而不是exit,exit比较粗鲁会终止整个程序,dispose只是终止窗口并在所有窗口都结束而且主线程也结束才终止程序。
4.getClass().getResource一般用在做成JAR之后,从同一个JAR里取数据,可以用比较简单的Toolkit.getDefaultToolkit().getImage()
5.你已经知道JLabel可以附带图片了。如果你要的效果是图片之上显示东西,这里你心里有了“层”的概念,而这个概念在Swing里的一个实现是JLayeredPane,去学习这个容器吧。给你个大概的例子:
JLayeredPane layers = new JLayeredPane();//创建
JPanel paneBackground = new JPanel(new BorderLayout());//背景层
paneBackground.add(new JLabel(Toolkit.getDefaultToolkit().getImage("C:/1.jpg")), BorderLayout.CENTER);//加入背景图片,BorderLayout.CENTER单独使用表示填满。
JPanel paneDetails = new JPanel(new FlowLayout());//这层你往里面加东西,就在背景上面了。
paneDetails.add(new JButton("ABC"));//加个按钮试试。
layers.add(paneBackground);layers.add(paneDetails);//把层按照从背后向前的顺序加进去。
fr.add(layers, BorderLayout.CENTER);//把layers加进frame里面去,填满。
纯手写代码笔误难免哦~
用java代码模拟一张图片可以这样操作:1.创建BufferedImage类
2.根据BufferedImage类得到一个Graphics2D对象
3.根据Graphics2D对象进行逻辑操作
4.处理绘图
5.将绘制好的图片写入到图片
//注意:
//当前目录下要有一个p.jpg文件
//压缩这个文件使它的大小尽量小,最好只有几十KB
//否则无法显示背景图片
package java525;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainWindow extends JFrame implements ActionListener {
JMenuBar menuBar;//菜单条
JMenu menu1, menu2, menu3, menu4;//菜单
JMenuItem m11, m12, m13;//菜单项
JMenuItem m21, m22, m23;
JMenuItem m31, m32, m33;
JMenuItem m41, m42;
Image pic;
public static void main(String[] args) {
new MainWindow();
}
public MainWindow() {
pic=Toolkit.getDefaultToolkit().getImage("p.jpg");
MediaTracker t=new MediaTracker(this);
t.addImage(pic,1);
try
{
t.waitForID(1);
}
catch(Exception e)
{
}
//createMenu();
setTitle("学生管理系统"); //设置窗口标题
setIconImage((new ImageIcon("icon.gif")).getImage()); //设置图标
setSize(600, 400);//设置窗口大小
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();//取屏幕大小
setLocation((size.width - getWidth()) / 2, (size.height - getHeight()) / 2);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //设置关闭行为
setVisible(true);//使窗口可见
//this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
public void actionPerformed(ActionEvent e) {
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(pic,0,0,null);
}
}