私は、背景イメージとテキストをJLabel
の形式で表示するゲームを作成しようとしています。それをどうやってやりますか?Imageの上にJLabelとJTextFieldを配置するにはどうすればよいですか?
私がこれをやっている主要な理由は、異なるフォントサイズの2つの異なるテキスト領域を持つことができるためです。 g.drawString()
を使用すると、全体のテキストサイズを1つだけ使用できます。ここで
は、これまでの私のコードです:ここでは
package com.cgp.buildtown;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Intro extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
private Thread thread;
private BufferedImage bg;
private Font font;
public Intro() {
super();
loadImages();
setFont(loadFont(50f));
}
private Font loadFont(Float f) {
try {
font = Font.createFont(Font.TRUETYPE_FONT, new File("res/komikatext.ttf"));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}
return font.deriveFont(f);
}
private void loadImages() {
try {
bg = ImageIO.read(new File("res/introbg.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void addNotify() {
super.addNotify();
thread = new Thread(this);
thread.start();
}
public void run() {
while(true) {
repaint();
}
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(bg, 0, 0, null);
}
}
1. 'JPanel'の' paint() 'をオーバーライドしないでください。 'paintComponent()'を使用してください。 2. [SSCCE](http://sscce.org/)を作成するには、 'main(String [])'を追加します。 –
チップをありがとう。 – Cg2916