Java Can';t在JFrame中使用drawString()打印任何字符串
我正在试图找出这段短代码的错误。我无法使用Java Can';t在JFrame中使用drawString()打印任何字符串,java,swing,jframe,paintcomponent,drawstring,Java,Swing,Jframe,Paintcomponent,Drawstring,我正在试图找出这段短代码的错误。我无法使用drawString()方法在我的JFrame中打印字符串文本。请帮忙。如果运行该程序,将只显示纯白色屏幕 代码: JFrame没有paintComponent方法。所以你不会覆盖任何东西,也不会画画 请注意,JPanel确实有一个paintComponent方法,您应该在JComponent或JPanel上进行绘制,它们确实有该方法。您不希望在顶级容器(如JFrame)上绘制。(如果您确实需要知道,正确的重写方法是paintforJFrame) 也就是
drawString()
方法在我的JFrame
中打印字符串文本。请帮忙。如果运行该程序,将只显示纯白色屏幕
代码:
JFrame
没有paintComponent
方法。所以你不会覆盖任何东西,也不会画画
请注意,JPanel
确实有一个paintComponent
方法,您应该在JComponent
或JPanel
上进行绘制,它们确实有该方法。您不希望在顶级容器(如JFrame
)上绘制。(如果您确实需要知道,正确的重写方法是paint
forJFrame
)
也就是说,您还应该在paintComponent
方法中调用super.paintComponent
,这样就不会打断绘制链并留下绘制瑕疵
旁注
- 作为良好的实践,使用
注释,这样您就知道您正确地重写了一个方法。您会看到,@Override
不会覆盖paintComponent
s方法之一JFrame
添加组件后setVisible(true)
panel.setBounds(0,0500)由于
具有默认的JFrame
BorderLayout
- 遵循Java命名约定,使用大写字母作为类名
- 从事件分派线程运行Swing应用程序。更多信息请访问
决赛
第二段中的
paingComponent
拼写错误。希望我能+2得到好的答案,然后给出额外的建议。
import javax.swing.*;
import java.awt.*;
public class sample extends JFrame
{
private JPanel panel;
public sample()
{
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
panel =new JPanel();
Container mainP= getContentPane();
mainP.add(panel);
panel.setBounds(0,0,500,500);
panel.setBackground(Color.WHITE);
}
public void paintComponent(Graphics g)
{
Graphics2D eg = (Graphics2D)g;
eg.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
eg.setColor(Color.BLACK);
eg.drawString("TEXT", 40, 120);
}
public static void main(String args[])
{
new sample();
}
}
import javax.swing.*;
import java.awt.*;
public class Sample extends JFrame {
private JPanel panel;
public Sample() {
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D eg = (Graphics2D) g;
eg.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
eg.setColor(Color.BLACK);
eg.drawString("TEXT", 40, 120);
}
};
Container mainP = getContentPane();
mainP.add(panel);
panel.setBackground(Color.WHITE);
setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new Sample();
}
});
}
}