类 - 图形 - drawString()

时间:2013-10-09 07:32:43

标签: java swing graphics drawstring

我正在尝试在JPanel中显示消息。 我使用了Graphics类的drawString()函数。 这是我的代码:

public class Frame {
    JFrame frame;
    JPanel panel;
    Graphics graph;

    Frame() {
        frame = new JFrame();
        panel = new JPanel();

        frame.setTitle("My wonderful window");
        frame.setSize(800, 600);
        frame.ContentPane(panel);
        frame.setVisible(true);
    }

    void displayMessage(String message) {
        graph = new Graphics();

        graph.drawString(message, 10, 20);
    }
}

我有这个错误: error: Graphics is abstract; cannot be instantiated

2 个答案:

答案 0 :(得分:2)

覆盖JPanel的{​​{1}}方法。在该方法中,您可以访问有效的Graphics实例。该方法调用每个油漆。

但可能最好在面板中添加paintComponent(Graphics g)。标签最初没有文字,当您收到消息时,只需拨打标签的JLabel

答案 1 :(得分:0)

您应该为您的 JFrameJPanel 创建子类,并覆盖您想要的方法。您可以尝试以下操作:

package test;

import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Frame extends JFrame {

    public static final String message = "HELLO WORLD!!!";
    
    public class Panel extends JPanel {
        
        public void paintComponent(Graphics graph) {
            graph.drawString(message, 10, 20);
        }
        
    }
    
    public Frame() {
        
        Panel panel = new Panel();
        this.setTitle("My wonderful window");
        this.setSize(800, 600);
        this.setContentPane(panel);
        this.setVisible(true);
        
    }
    
    public static void main(String[] args) {
        
        new Frame();
        
    }

}

此外,还有很多关于这方面的好书/教程。你应该读一读。

编辑: 您还应该阅读有关所有 JComponent(JButton、JLabel...)的信息。它们相当有用。