Java 图形未在应用程序上显示
Java Graphics Are Not Displaying on Application
这是我最近创建的 java 应用程序的代码。它是在 Eclipse IDE 中创建的,没有发现任何错误。我想知道我的错误...
只需检查以下代码是否有错误。
第一个Class:
import javax.swing.*;
public class GraphicsGo extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
System.out.println("Noice");
JFrame jf = new JFrame();
JPanel pnl = new JPanel();
jf.add(pnl);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
graphics gr = new graphics();
jf.setSize(400, 250);
pnl.add(gr);
jf.setVisible(true);
}
}
第二个Class:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class graphics extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
public void PaintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(Color.red);
g.setColor(Color.blue);
g.drawRect(0, 0, 2, 2);
setVisible(true);
}
}
The window
我觉得我做的一切都是对的。
类 是两个不同的文件。
许多问题:
方法名称不应以大写字符开头。要覆盖的方法应该是 paintComponent(...)
.
Class 名称应该以大写字符开头。将您的“图形”class 重命名为更有意义的名称。学习 Java 命名约定并遵循它们以避免像这样的混淆和错误。
绘画方法不应改变 class 的状态。不要调用 setBackground()。该方法应该在创建对象时在构造函数或实例变量上调用。
自定义绘画时需要覆盖组件的getPreferredSize()
。目前您的自定义组件没有合理的首选大小,因此布局管理器无法有效设置其 size/location。
请参阅 Custom Painting 上的 Swing 教程,了解如何更好地构建代码以实现上述所有建议的工作示例。
这是我最近创建的 java 应用程序的代码。它是在 Eclipse IDE 中创建的,没有发现任何错误。我想知道我的错误... 只需检查以下代码是否有错误。
第一个Class:
import javax.swing.*;
public class GraphicsGo extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
System.out.println("Noice");
JFrame jf = new JFrame();
JPanel pnl = new JPanel();
jf.add(pnl);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
graphics gr = new graphics();
jf.setSize(400, 250);
pnl.add(gr);
jf.setVisible(true);
}
}
第二个Class:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class graphics extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
public void PaintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(Color.red);
g.setColor(Color.blue);
g.drawRect(0, 0, 2, 2);
setVisible(true);
}
}
The window 我觉得我做的一切都是对的。
类 是两个不同的文件。
许多问题:
方法名称不应以大写字符开头。要覆盖的方法应该是
paintComponent(...)
.Class 名称应该以大写字符开头。将您的“图形”class 重命名为更有意义的名称。学习 Java 命名约定并遵循它们以避免像这样的混淆和错误。
绘画方法不应改变 class 的状态。不要调用 setBackground()。该方法应该在创建对象时在构造函数或实例变量上调用。
自定义绘画时需要覆盖组件的
getPreferredSize()
。目前您的自定义组件没有合理的首选大小,因此布局管理器无法有效设置其 size/location。
请参阅 Custom Painting 上的 Swing 教程,了解如何更好地构建代码以实现上述所有建议的工作示例。