I want to know How could I draw a String or Rectangle (the JFrame is in a full screen completely)
Heres what in my Main.java class:
public static int WIDTH, HEIGHT;
private Window window;
...
public Main() {
window = new Window("2D Shooter", this);
...
private void render(){
BufferStrategy bs = this.getBufferStrategy();
if(bs == null){
this.createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT);
handler.render(g);//this calls the render method to render objects
g.dispose();
bs.show();
}
Later in a different class I have:
public void render(Graphics g){
...
g.setColor(Color.WHITE);
g.drawString("2D Shooter", ((Main.WIDTH)/2), (Main.HEIGHT/5));
...
}
This Code Works and runs BUT the text is not completely centered I want it to be Centered on top not in the middle. Thank You!
Use the graphics context's FontMetrics
.
String s = "2D Shooter";
int w2 = g.getFontMetrics().stringWidth(s) / 2;
int h2 = g.getFontMetrics().getHeight();
g.drawString(s, getWidth() / 2 - w2, h2);
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* @see http://stackoverflow.com/a/37150783/230513
*/
public class Test {
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setFont(getFont().deriveFont(Font.BOLD, 24f));
String s = "2D Shooter";
int w2 = g.getFontMetrics().stringWidth(s) / 2;
int h2 = g.getFontMetrics().getHeight();
g.drawString(s, getWidth() / 2 - w2, h2);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(320, 240);
}
});
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Test()::display);
}
}