gpt4 book ai didi

Java AWT 故障排除

转载 作者:行者123 更新时间:2023-12-01 21:15:30 25 4
gpt4 key购买 nike

所以我一直在尝试创建一个在 Windows 10 上运行的简单图形程序。据我所知,我的教科书希望我这样创建这个程序:

    import java.awt.*;
public class DrawLine1 {
public static void main (String[]args) {
DrawingPanel panel = new DrawingPanel(1281, 721);
Graphics g = panel.getGraphics();
g.drawLine(1, 1, 69, 69);
}
}

但是,当我尝试编译它时,cmd 返回以下错误:d

rawLine1.java:4: error: cannot access DrawingPanel
DrawingPanel panel = new DrawingPanel(1281, 721);
^
bad source file: .\DrawingPanel.java
file does not contain class DrawingPanel
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
1 error

这是我编写的代码或我设置 Java 的方式的错误吗?我该如何修复它?

最佳答案

看起来您编写的代码不完整 - 编译器似乎提示它找不到 DrawingPanel 类,如果它不存在,那么您还需要创建并编译 DrawingPanel 代码第一的。但话虽如此,我不建议您使用此代码或任何教程建议的内容,因为它提出了一些关键的错误建议

  • 首先,您需要在顶级窗口中显示任何绘图 JPanel(假设 DrawingPanel JPanel)才能显示它。对于 Swing GUI,这意味着您需要创建一个 JFrame 并将绘图 JPanel 放入其中,然后通过 setVisible(true) 将 JFrame 设置为可见
  • 不建议以这种方式使用组件 Graphics 对象进行绘制 - 通过调用 getGraphics() ,因为不能保证以这种方式获得的 Graphics 对象会持续存在。例如,假设您让此代码正常工作,如果您最小化并恢复 GUI,您的行就会消失。
  • Swing 和 AWT 图形是被动的——您可以重写 JPanel 的 PaintComponent 方法并在该方法内进行绘图。
  • 您应该在 Swing 事件线程上启动 Swing 和 AWT GUI。这通常是通过将此代码放入 Runnable 的 run() 方法中,然后将 Runnable 传递到 SwingUtilities.invokeLater(...) 方法调用中来完成的。

例如:

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;

public class SimpleLine extends JPanel {

private static final int PANEL_WIDTH = 400;

public SimpleLine() {
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_WIDTH));
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g); // so JPanel can do its own housekeeping graphics
int x1 = 1;
int y1 = x1;
int x2 = PANEL_WIDTH - 2;
int y2 = x2;
g.drawLine(x1, y1, x2, y2);
}

private static void createAndShowGui() {
JFrame frame = new JFrame("SimpleLine");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SimpleLine());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
}

关于Java AWT 故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com