java gui怎样在特定窗口中插入图片?

本人刚接触gui不久,现在的想法是在第一个gui窗口点一个按钮,这个窗口关闭,新窗口打开(目前已经实现)。但就是不知道怎样在第一个或第二个窗口插入图片,另外如果我想再添加... 本人刚接触gui不久,现在的想法是在第一个gui窗口点一个按钮,这个窗口关闭,新窗口打开(目前已经实现)。但就是不知道怎样在第一个或第二个窗口插入图片,另外如果我想再添加label或button覆盖在这个图片上,这个图片一定要是用什么canvas还是什么的做吗?代码如下:import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class gui_image extends JFrame { private static final LayoutManager GridLayout = null; private ImageIcon image; private JLabel label; private ImageIcon image2; private JLabel label2; gui_image(){ setLayout(new FlowLayout()); image = new ImageIcon(getClass().getResource("1.jpg")); label = new JLabel(image); add(label); image2 = new ImageIcon(getClass().getResource("2.jpg")); label2 = new JLabel(image2); add(label2); } public static void main(String[] args) { final JFrame fr = new JFrame("first window"); ImageIcon image; JLabel label; fr.setLayout(GridLayout); fr.setBounds(100, 180, 400, 400); Button b = new Button("srtart"); b.setBounds(80, 80, 80, 80); fr.add(b); fr.setVisible(true); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFrame jf = new JFrame("second window"); jf.setSize(400, 400); jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE); fr.dispose(); jf.setVisible(true); } }); } } 展开
 我来答
匿名用户
2014-03-08
展开全部

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里面去,填满。

纯手写代码笔误难免哦~

yugi111
2014-03-08 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
  1. 用JLabel来实现图片绘制

  2. 用JEditPanel来实现html页面绘制,然后图片在里面

  3. 用paint来实现图片的绘制

  4. 用其他的来实现图片的绘制,不计其数!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式