現在、Javaで簡単なアニメーションを実現しようとしています。 BufferedImageを1つ印刷したいパネルが1つあります。画像の位置を1点に設定し、その寸法を設定します。Java Swing:グラフィックコンポーネントは左上隅のゾーンにのみ表示されます
しかし、イメージの「プリントゾーン」を寸法の左上に配置しているかのように、そのプリントゾーンに属するイメージの一部のみが描画されます。 folowing絵:
ここ
がある..私はそれがpropably私は私の問題に対応する任意の答えを見つけることができませんが行方不明です1つの基本的なものだと思いますし、私はJavaでbeginerていますこの問題に関連するコードの一部:public abstract class ObjetAnime extends JPanel{
protected Point location;
protected Dimension dim;
protected BufferedImage picture;
ObjetAnime(ObjetsPropriete objetProp)
{
location = new Point(10,10);
dim = objetProp.getDimension();
try {
picture = ImageIO.read(new File(objetProp.getPath()));
} catch (IOException e1) {
e1.printStackTrace();
}
this.setSize(dim);
this.setLocation(location);
this.setLayout(null);
this.setOpaque(false);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
if (picture != null) {
g.drawImage(picture, location.x, location.y, this);
}
}
そして、私が持っているスーパークラス:
public ListeObjets(GConfig gconfig, GPanel jeuPanel)
{
setListeObjets(new ArrayList<ObjetAnime>());
panel = jeuPanel;
for(int i = 0; i < gconfig.getObjetsTab().length; ++i)
{
switch(gconfig.getObjetsTab()[i].getType())
{
case ROND:
getListeObjets().add(new Rond(gconfig.getObjetsTab()[i]));
break;
}
}
addToPanel(panel);
}
public void addToPanel(GPanel jeuPanel) {
jeuPanel.setLayout(null);
Iterator iterator = getListeObjets().iterator();
ObjetAnime obj = (ObjetAnime) iterator.next();
jeuPanel.add(obj, obj.location);
while(iterator.hasNext())
{
obj = (ObjetAnime) iterator.next();
jeuPanel.add(obj, obj.location);
}
System.out.println(obj);
}
とオブジェクトのプロパティは次のとおりです。
public ObjetsPropriete()
{
path = new String("./Images/Boule.png");
dim = new Dimension(32,32);
type = Objet.ROND;
}
おかげでたくさんの素敵な一日を持っています!