我目前正在为一个事实而苦苦挣扎,我的画框背景是低谷。结果,我框架的“背景图像”始终是框架打开时的背后背景。
问题的外观
代码
import java.awt.Button;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
public class launcher extends JFrame{
Button btn;
public launcher() {
this.setSize(400, 300);
this.setLocationRelativeTo(null);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
launcher l = new launcher();
l.setVisible(true);
}
});
}
public void paint(Graphics g) {
String s = "Dieser String steht in der Mitte des Fensters";
int breite = getSize().width - getInsets().left - getInsets().right;
int hoehe = getSize().height - getInsets().bottom - getInsets().top;
Font font = new Font("Serif", Font.BOLD + Font.ITALIC, 15);
FontMetrics fmetrics = getFontMetrics(font);
int zeilenMitte = fmetrics.getAscent() - (fmetrics.getAscent() + fmetrics.getDescent()) / 2;
g.setFont(font);
g.drawString(s, getInsets().left + (breite - fmetrics.stringWidth(s)) / 2,
getInsets().top + hoehe / 2 + zeilenMitte);
g.drawRect(this.getInsets().left + 20,
this.getInsets().top + 20,
(int)this.getSize().getWidth() - this.getInsets().left - this.getInsets().right - 40,
(int)this.getSize().getHeight() - this.getInsets().top - this.getInsets().bottom -40);
g.setColor(Color.yellow);
g.fillRect(45, 55, 200, 50);
g.setColor(Color.blue);
g.setFont(font);
g.drawString("gefülltes Rechteck", 50, 80);
}
}
我已经尝试过的东西
我删除了代码的某些部分,以查看问题本身所在的位置。经过测试后,我很确定问题出在这里(第42行):
g.drawString(s, getInsets().left + (breite - fmetrics.stringWidth(s)) / 2,
getInsets().top + hoehe / 2 + zeilenMitte);
删除行后,它看起来像这样(看起来应该是这样)。
但是,这当然不是我的目标,只是删除行并忽略它...
注意
请不要抱怨我的代码的结构。我目前正在通过以下书籍学习这种新语言:
Vorcon的Java 2 SDK v 1.4.0本书
所以我只是一起研究一些命令,以后会注意结构。