Java AWT drawString()不显示在窗口上

我正在遵循Java : The complete reference 8th edition (JDK 7)AWT上的示例,但无法在出现的窗口中成功显示字符串。尺寸和标题设置正确,并显示窗口。如果我在控制台上使用paint()方法输出一个字符串,我会看到它实际上被调用了几次,但是该字符串没有出现在我的应用程序窗口中。我看不到与示例有何不同;我实际上少了一些代码(他们添加了鼠标侦听器和按键侦听器):\

import java.awt.Dimension;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Main {

public static void main(String[] args) {

Application app = new Application();

app.setSize(new Dimension(640, 480));

app.setTitle("This is a test");

app.setVisible(true);

}

}

class MyWindowAdapter extends WindowAdapter {

public void windowClosing(WindowEvent we) {

System.exit(0);

}

}

class Application extends Frame {

public Application() {

addWindowListener(new MyWindowAdapter());

}

public void paint(Graphics g) {

System.out.println("Hey hey !");

g.drawString("Test", 10, 10);

}

}

回答:

您遇到的问题是您直接在框架顶部绘画。框架还包括框架边框,因此位置0、0(或者在您的情况下为10、10)实际上隐藏在框架边框下。

你可以在这里看到更多关于它的信息。

相反,您应该绘制到Canvas并将其添加到框架中

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class BadFrame {

public static void main(String[] args) {

new BadFrame();

}

public BadFrame() {

Application app = new Application();

app.setSize(new Dimension(640, 480));

app.setTitle("This is a test");

app.setLayout(new BorderLayout());

app.add(new MyCanvas());

app.setVisible(true);

}

class MyWindowAdapter extends WindowAdapter {

public void windowClosing(WindowEvent we) {

System.exit(0);

}

}

public class MyCanvas extends Component {

@Override

public void paint(Graphics g) {

super.paint(g);

System.out.println("Hey hey !");

g.drawString("Test", 10, 10);

}

}

class Application extends Frame {

public Application() {

addWindowListener(new MyWindowAdapter());

}

}

}

想到的下一个问题是,为什么要进行AWT?该API已被广泛使用,有利于Swing。如果没有别的,它会自动双缓冲;)

ps-您可能还会发现一些有趣的2D

图形,尤其是关于文本的讨论

以上是 Java AWT drawString()不显示在窗口上 的全部内容, 来源链接: utcz.com/qa/414706.html

回到顶部