我正在尝试在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
答案 0 :(得分:2)
覆盖JPanel
的{{1}}方法。在该方法中,您可以访问有效的Graphics实例。该方法调用每个油漆。
但可能最好在面板中添加paintComponent(Graphics g)
。标签最初没有文字,当您收到消息时,只需拨打标签的JLabel
。
答案 1 :(得分:0)
您应该为您的 JFrame
和 JPanel
创建子类,并覆盖您想要的方法。您可以尝试以下操作:
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...)的信息。它们相当有用。