我正在尝试使用Java的Graphics2D库获取正确的字体来显示。我不确定当前显示什么字体。我试图将字体作为程序的一部分,以便没有该程序的人可以使用该程序。 Eclipse并不声称找不到文件,但是字体仍然不正确。
我要使用的字体
MainClass类
final DatabaseReference databaseRef =FirebaseDatabase.getInstance().getReference().
child(selected_server).child(user_role).child(user.getUid();
databaseRef.updateChildren(newProfile)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
DisplayText类
import java.io.File;
import java.io.IOException;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel{
static final int WINDOW_WIDTH = 1600;
static final int WINDOW_HEIGHT = 900;
// Displays the game window.
private static void displayGameWindow() {
JFrame frame = new JFrame("Bandit King");
frame.getContentPane().add(new MainClass());
frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Imports a font.
private static void registerFont() {
try {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
Font f = Font.createFont(Font.TRUETYPE_FONT, new File("OLDSH.TTF"));
ge.registerFont(f);
} catch (IOException|FontFormatException e) {
e.printStackTrace();
System.out.println("ERROR loading font, switching to serif.");
Font f = new Font("Serif", Font.PLAIN, 12);
}
}
// Calls functions to display the screen
@Override
public void paint(Graphics g) {
Dimension d = this.getPreferredSize();
Graphics2D g2d = (Graphics2D) g;
// default font settings
String fontName = "OldStyle 1 HPLS";
String fontType = "PLAIN";
int[] color = {0, 0, 0};
int fontSize = 25;
// display game title
String title = "Bandit King";
int titleCentered = DisplayText.findCenter(g2d, title);
DisplayText.displayText(g2d,
title, fontName, "BOLD",
color,
titleCentered, 50, 40);
// display menu
int yPos = 120;
String[] menuArr = {
"(a) Start a new game",
"(b) Load a saved game",
"(c) Exit the game",
"(d) Resume the game"};
for(int i = 0; i < menuArr.length; i++) {
DisplayText.displayText(g2d,
menuArr[i], fontName, fontType, color, 40, yPos, fontSize);
yPos += 60;
}
}
public static void main(String[] args) {
registerFont();
displayGameWindow();
}
}
答案 0 :(得分:0)
我拼错了字体的名称。在MainClass类的registerFont方法下,键入。.
int size = sizeof(struct DNS_Header);
size += sizeof(struct DNS_Question);
char *message [size];
int totalSize = 0;
int stringSize = qname_labelFormat.length() + 1;
char* temp = {0};
temp = (char*)qname_labelFormat.c_str();
std::memcpy(message, (struct DNS_Header*)&packetHeader, sizeof(packetHeader));
totalSize = sizeof(struct DNS_Header);
std::memcpy(message + totalSize, (char*)temp, sizeof(qname_labelFormat));
totalSize += sizeof(qname_labelFormat);
std::memcpy(message + totalSize, (struct DNS_Question*)&packetQuestion, sizeof(packetQuestion));
totalSize += sizeof(packetQuestion);
int bytesSent = 0;
if ((bytesSent = write(sock, message, totalSize)) < 0) {
logger->printLog ("write Failed");
std::string error = strerror(errno);
logger->printLog(error);
}
else {
logger->printLog ("write was successful");
}
当我应该输入..
String fontName = "OldStyle 1 HPLS"
注意附加的“ H”。