⑴ java 面板上顯示圖片的語句怎麼寫,最好舉個例子...
第一種方法:用JLabel顯示圖片,此種方法圖片是一個UI控制項,通過布局管理器可放在面板的任意位置,一般用於較小的圖標顯示,圖片上不能再放置其它控制項。
第二種方法:在JPanel面板容器中將圖片繪制出來,可通過繪制坐標將圖片顯示在面板的任意位置,一般用於背景圖,圖片本身不是UI控制項,因此圖片上還可以放置其它控制項。
例子:
package net.miqiang.gui;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* Java面板中顯示圖片的兩種常用方法
* @FileName: TestMain.java
* @Author: 米強 <轉載請保留作者與出處>
* @Blog: http://blog.csdn.net/mq612
* @Blog: http://hi..com/mq612/blog
*/
@SuppressWarnings("serial")
public class TestMain extends JFrame {
public TestMain() {
super("顯示圖片的兩種方法");
// JPanel面板容器,放置或繪制圖片用
JPanel pane = null;
// 獲取一個Image圖片對象,使用final修飾為了第二種方法的匿名類可以使用
final Image image = getToolkit().getImage("C:\\face.jpg");
{
// 將第二種方法的代碼塊全部注釋掉,可看到第一種方法顯示的圖片
// 第一種方法:用JLabel顯示圖片,此種方法圖片是一個UI控制項,通過布局管理器可放在面板的任意位置,一般用於較小的圖標顯示,圖片上不能再放置其它控制項。
// 通過圖片構造一個標簽對象
JLabel label = new JLabel(new ImageIcon(image));
// 構造JPanel面板
pane = new JPanel();
// 將標簽添加進面板容器
pane.add(label);
}
/*
{
// 將第一種方法的代碼塊全部注釋掉
// 第二種方法:在JPanel面板容器中將圖片繪制出來,可通過繪制坐標將圖片顯示在面板的任意位置,一般用於背景圖,圖片本身不是UI控制項,因此圖片上還可以放置其它控制項。
// 構造面板對象,由於要重寫其中的paintComponent方法,這里使用匿名類,相當於繼承了JPanel對象
pane = new JPanel(){
// 重寫面板的繪制方法
@Override
protected void paintComponent(Graphics g) {
// 調用父類的paintComponent方法
super.paintComponent(g);
// 使用Graphics繪制圖片
g.drawImage(image, 0, 0, this);
}
};
// 隨便添加一個按鈕控制項,該按鈕可以顯示在圖片上方,第一種方法則無法辦到。
pane.add(new JButton("按鈕可以出現在圖片上"));
}
*/
// 將面板添加進窗體的ContentPane中
getContentPane().add(pane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 400);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new TestMain();
}
}
⑵ 如何給JAVA GUI 窗口添加背景圖片
用
繼承PANEL重寫paintComponent方法,
這些控制添加在panel上,就不會出現你說的問題了。
重寫paint,會出現你說的問題
直接在窗體上添加了背景圖片也會出現你說的問題。
下邊是例子。
------------------------------------------------------------------------------------
import javax.swing.ImageIcon;
public class App extends JFrame {
private JTextField textField;
public App() {
getContentPane().setLayout(new BorderLayout(0, 0));
JPanel panel = new ImagePanel();
getContentPane().add(panel);
panel.setLayout(null);
JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(108, 234, 93, 23);
panel.add(btnNewButton);
textField = new JTextField();
textField.setBounds(214, 176, 96, 19);
panel.add(textField);
textField.setColumns(10);
setSize(460, 350);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new App();
}
class ImagePanel extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon icon = new ImageIcon("D:\\1.jpg");
g.drawImage(icon.getImage(), 0, 0, null);
}
}
}