本文目錄一覽:
- 1、Java圖片顯示不出來,怎麼解決
- 2、Java對話框上顯示圖片
- 3、JAVA 中在一個組件上顯示圖片的所有方法
- 4、java隨機圖片顯示
- 5、為什麼Java里的圖片需要調整窗口大小才能正常顯示?
- 6、java怎麼顯示本地圖片
Java圖片顯示不出來,怎麼解決
有兩個問題:
圖片路徑沒有寫對,圖片在 src 下,圖片路徑應是 src/海洋.png,正確的寫法應是 image = new ImageIcon(“src/海洋.png”)
image = new ImageIcon(“src/海洋.png”) 應該放在 label = new JLabel(image); 前面。
如下例:
import javax.swing.*;
class JPanelDemo extends JPanel {
JLabel label;
JTextField text;
JButton button;
ImageIcon image;
public JPanelDemo() {
image = new ImageIcon(“src/test.png”);
label = new JLabel(image);
text = new JTextField(20);
button = new JButton(“確定”);
add(label);
add(text);
add(button);
}
}
public class App extends JFrame {
public App() {
this.setSize(500, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new JPanelDemo());
}
public static void main(String[] args) {
new App().setVisible(true);
}
}
Java對話框上顯示圖片
其實有很多種方法可以解決圖片顯示大小的問題:
使用photoshop修改. 優點是可以節省系統資源, 顯示圖片的時候,不用做處理,缺點是需要了解ps的基本操作
使用JDialog 自定義對話框. 優點 可以實現複雜的效果, 缺點,代碼量比較多
使用ImageIcon, Image 類 實現圖片的縮放,. 優點: 純java代碼解決, 缺點: 如果大量的圖片需要縮放, 那麼可能影響程序的速度.
方案3的代碼如下
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
ImageIcon icon = new ImageIcon(“imgs/1.png”); // 得到icon對象 .注意我的圖片地址和你的不一樣,注意修改!!
Image image = icon.getImage(); //icon—Image
float scale = 0.5f; //縮放比例 50%
int width = Math.round(icon.getIconWidth()*scale); // 變小 50%的寬
int height= Math.round(icon.getIconHeight()*scale);// 變小50%的高
Image miniIcon = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
// image 變成指定大小. 縮放模式為 SCALE_SMOOTH(平滑優先)
ImageIcon smallIcon = new ImageIcon(miniIcon);// Image—icon
JOptionPane.showInputDialog(null, “吃了嗎?”, “標題”, 0, smallIcon, null, “默認值”);
}
}
效果圖
圖1 圖片顯示比例為原圖的50%
圖2 圖片顯示比例為原圖的120%
JAVA 中在一個組件上顯示圖片的所有方法
所有方法我可不知道,介紹個最常用的:通過Graphics對象來進行繪圖,要獲得此對象可通過方法getGraphics()來實現,舉個例子:Graphics g=getGraphics();g.drawImage(image,0,0,this);drawImage()函數是Graphics對象的一個方法,意思就是把image畫到本對象的0,0位置。此函數有很多重載的方法: drawImage(Image,int,int,ImageObserver);不再說了。 drawImage(Image,int,int,Color,ImageObserver);需要說的是Color是指的圖片的背景色,如果圖片有透明的區域,就用這個背景色。其餘的參數含義剛說了,就不重複了。 drawImage(Image,int x,int y,int width,int height,ImageObserver);把image畫在ImageObserver的x,y位置,寬為width,高為height。如果圖片的大小與指定的寬高不一致,就會進行縮放,總是把整張圖全畫進去。 drawImage(Image,int,int,int,int,Color,ImageObserver);意思跟剛剛的一樣,Color還是背景色。 drawImage(Image,int x1,int y1,int width1,int height1,int x2,int y2,int width2,int height2,ImageObserver);先將圖片裁剪,從x2,y2開始裁,留下的圖像寬為width2,高為height2,再把這個裁好的圖畫到ImageObserver的x1,y1上,大小為width1,height1,如果大小不一致還是用縮放的辦法。 drawImage(Image,int,int,int,int,int,int,int,int,Color,ImageObserver);跟上面的一樣,Color是背景色。 需要注意的是getGraphics()方法是JComponent對象的方法,所有的Swing對象都繼承JComponent對象,所以象JFrame等類都有這個方法,也就是說,此方法不能在JComponent對象以外的地方調用,顯然的不能寫在main方法里。drawImage()函數里的Image對象可以這樣用:Image image=Toolkit.getDefaultToolKit().getImage(“my.jpg”);這樣就獲得了一張圖片。drawImage()函數里的ImageObserver對象其實就是JComponent對象,因為ImageObserver是個接口,JComponent類實現了它,所以所有的JComponent對象就是ImageObserver對象,就是JFrame,JPanel等對象。當然還有很多方法,剛才說了縮放的裁剪,其實圖像的過濾還有很多內容,要說起來的話恐怕要上萬字了,我懶得說那麼多了…這個方法挺好用的,一般的軟件就用這個就沒問題了,除非你說你想做個photoshop那我就愛莫能助了。再舉個例子吧,顯示一張圖片://Display.java//——————————-import javax.swing.JFrame;import java.awt.Toolkit; public class Display extends JFrame{ private Image image; public JFrame(){super(“MyDisplay”);image=Toolkit.getDefaultToolkit().getImage(“my.jpg”);//圖片換成你自己的this.setSize(800,600);} public void paint(Graphics g){g.drawImage(image,0,0,800,600,this);//畫圖片,這裡的paint方法系統自動調用,並且還傳遞進來了Graphics對象,省的再自己用getGraphics方法了。} public static void main(String[] args){new Display().setVisible(true);} }就說這麼多吧,要真講起來實在太麻煩了,介紹本書給你:java2圖形設計卷I:AWT,java2圖形設計卷II:SWING,這兩本書夠你看的了,雖然內容老舊,10年前的書,但是講的全是基礎,而且裡面的東西現在還在用。你要是E文好就去SUN官網看技術文檔或者jdk的幫助文檔。
java隨機圖片顯示
參考代碼. 你可以對照修改
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;
public class Picture extends JFrame {
private JLabel picture;
public Picture() {
ImageIcon[] icons = new ImageIcon[4];//四張圖的icon對象
String photopath = “”;
for (int i = 1; i = 4; i++) {
//這裡的目錄是我的圖片所在的目錄 1.gif~4.gif
photopath = “src/images/” + i + “.gif”;
Image img = Toolkit.getDefaultToolkit().createImage(photopath);
icons[i-1] = new ImageIcon(img);
}
picture = new JLabel();
JPanel jp = new JPanel();
jp.add(picture);
add(jp,BorderLayout.CENTER);
setBounds(500, 200, 200, 200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
int n = Integer.parseInt(JOptionPane.showInputDialog(“input: “));
//先設置Jlabel應該顯示的圖片
picture.setIcon(icons[n-1]);
//然後才開始顯示窗口
this.setVisible(true);
}
public static void main(String[] args) {
new Picture();
}
}
為什麼Java里的圖片需要調整窗口大小才能正常顯示?
窗口顯示的速度很快。當顯示帶有圖片的窗口時,如果你的圖片的加載不是同步的,可能窗口都顯示完了,你的圖片還沒有加載完,當然不會顯示圖片。而調整窗口的大小會導致重新繪製窗口,如果此時你的圖片加載完了,就會顯示出來,如果還是沒有加載完,也不會顯示。這與圖片的加載方式有關,應採用同步的加載方式,確保窗口顯示前,圖片已加載完。
java怎麼顯示本地圖片
在面板上搞一個和面板一樣大的JLabel
然後,通過JFileChooser獲得路徑,利用這個圖片的路徑,構建一個ImageIcon
最後,根據這個ImageIcon去給JLabel對象setIcon(ImageIcon對象);
具體地:
1.panel.add(label,BorderLayout.CENTER);
2.ImageIcon icon = new ImageIcon(url);
3.label.setIcon(icon);
下面的代碼你把 .JPG改成BMP試試看,O(∩_∩)O~
package com.shlq.sample;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ImagePane extends JPanel
{
JLabel jl = null;
ImageIcon img = null;
public ImagePane()
{
img = new ImageIcon( “E:\\Picture\\1.jpg “);
jl = new JLabel(img);
this.setLayout(new BorderLayout());
this.add(jl, BorderLayout.CENTER);
}
public static void main(String[] args)
{
JFrame test = new JFrame( “Image Pane “);
test.getContentPane().add(new ImagePane());
test.pack();
test.setVisible(true);
test.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/291571.html