1
我正在研究swing和java2D中的圖形程序的基礎知識,以便練習。我遇到了無法顯示圖像的問題。我將代碼分成4類,這樣當程序變大時,管理起來就更容易了。Java2D和Swing不使用JFrame和JPanel輸出圖像
這個想法是,我在Main中很少,Frame初始化我的第一個屏幕,屏幕可以全部細分爲他們自己的類,TitleScreen就是其中之一,PullImage完成所有緩衝工作並打印困擾我的圖像。
當我運行這個我得到一個空的窗口,沒有錯誤,所以我不知道問題出在哪裏。
請和謝謝你的幫助。
主要
package com.game.pack;
import javax.swing.JFrame;
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
public final static void main(String[] args)
{
new Frame().initialize();
new TitleScreen().openScreen();
}
}
框架
package com.game.pack;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Frame extends JFrame{
private static final long serialVersionUID = 1L;
public final void initialize()
{
JFrame frame = new JFrame("Game");
JPanel panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
panel.setSize(800,600);
frame.setLayout(null);
panel.setLayout(null);
frame.setLocationRelativeTo(null);
this.getContentPane().add(panel);
panel.setVisible(true);
frame.setVisible(true);
}
public final void close()
{
dispose();
}
}
TitleScreen
package com.game.pack;
public class TitleScreen {
public void openScreen()
{
new PullImage().printARGB("icons/titleBG.png",800,600,0,0);
new PullImage().printARGBFromSheet("icons/titleButtons.png",
200, 125, 400, 200, 200, 40, 0, 0);
while (1!=2)
{
}
PullImage
package com.game.pack;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
public class PullImage {
public void printARGB(String source, int sizeX, int sizeY, int locX, int locY)
{
Image Icon = new ImageIcon(source).getImage();
BufferedImage BuffedImage = new BufferedImage(sizeX, sizeY, BufferedImage.TYPE_INT_ARGB);
Graphics graphics = BuffedImage.getGraphics();
graphics.drawImage(Icon,locX,locY,null);
}
public void printARGBFromSheet(String source, int sizeX, int sizeY, int locX, int locY, int width, int height, int sheetLocX, int sheetLocY)
{
Image Icon = new ImageIcon(source).getImage();
BufferedImage BuffedImage = new BufferedImage(sizeX,sizeY,BufferedImage.TYPE_INT_ARGB);
Graphics graphics = BuffedImage.getGraphics();
graphics.drawImage(Icon, locX, locY, locX+width, locY+height, sheetLocX, sheetLocY, sheetLocX+width, sheetLocY+height, null);
}
}
取代它到目前爲止,我已經看不出有什麼企圖向渲染任何內容到屏幕上,哪來的'paintXxx'方法?我建議你需要看看[執行自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/)和[2D圖形](http://docs.oracle。 com/javase/tutorial/2d/index.html)以獲取更多信息 – MadProgrammer
我的印象是,這是由graphics.drawImage完成的。它不這樣做嗎?那它做了什麼? – user1784254
1)哇!您只需在3分鐘內閱讀@MadProgrammer提及的那些教程?!? 2)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –