public void paint(Graphics g){
g.setColor(Color.red);
g.drawString("hello",50,50);
}
框架的背景看起来很奇怪和透明。 这个问题只发生在我绘制一个字符串时,但是当我绘制一个矩形或任何其他形状时,框架看起来很好。
这是代码:
import javax.swing.*;
import java.awt.*;
public class B extends JFrame {
public B() {
this.setTitle("programme");
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
this.setVisible(true);
}
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawString("hello", 50, 50);
}
}
这是结果:
答案 0 :(得分:1)
感谢您的帮助。 我找到了答案。 问题发生是因为我没有将对象(g)传递给paint方法
中的构造函数这是整个代码:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
导入javax.swing.JFrame;
B类扩展了JFrame {
public B() {
this.setTitle("programme");
this.setSize(400,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
this.setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
// I have added the previous line and it solved the problem
g.setColor(Color.red);
g.drawString("hello", 50, 50);
}
}
public class main {
public static void main(String[] args) {
B obj = new B();
}
}
无论如何,谢谢你的帮助。
答案 1 :(得分:0)
super("programme");
代替setTitle("programme");
如果没有工作添加
setBackground(Color.lightGray);
在构造函数中。
无论如何,当你想绘制String时,你应该使用JLabel
类。