为啥在java中不能导入awt包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在java中不能导入awt包相关的知识,希望对你有一定的参考价值。

我想写窗体,但是不能把awt包导入进来。老是说什么找不到符号,还有就是无法访问Frame。我知道我以前是能够写的,但是现在不能了,想请高手帮忙啊。我以为是其他软件的影响,Eclipse有没有影响啊?我不想去把系统还原了,那样好麻烦。
我知道是可以,但是我电脑上就是不行,我截图了,可以帮忙看一下吧!

参考技术A 你可以说得更详细点吗,最好截个图什么的,或者发一下源代码

你测试的类怎么能和f写在一个文件里面呢,如果要写在一个文件里面,f应该作为内部类啊。 如果要测试,直接用f的main方法就可以了

package awtTest;

import java.awt.Frame;

public class TestAwt extends Frame
public TestAwt()
setVisible(true);


public static void main(String[] args)
TestAwt ta=new TestAwt();



这样子没有任何问题哈本回答被提问者和网友采纳
参考技术B 找不到符号可能是编译出错,很可能是程序中语法错误。
或者是你的类路径设置有问题。
参考技术C 在module-info.java添加requires java.desktop;
可以去Stack Overflow上看看解释 很详细了
参考技术D 谁说不能啊,可以啊!
import java.awt.*;
import java.applet.*;
public class Hello extends Applet
public void paint(Graphics g)
g.drawString("helloworld".50.50);

为啥我不能用这段代码画一个椭圆?

【中文标题】为啥我不能用这段代码画一个椭圆?【英文标题】:Why can't I draw an ellipse with this code?为什么我不能用这段代码画一个椭圆? 【发布时间】:2011-01-31 15:24:41 【问题描述】: 包装测试; 导入 java.awt.*; 导入 java.awt.event.*; 导入 java.awt.geom.Ellipse2D; 导入 java.awt.image.BufferedImage; 导入 javax.swing.*; 公共类 test_bmp 扩展 JPanel 实现 MouseListener,MouseMotionListener,ActionListener 静态 BufferedImage 图像; 颜色颜色; 点开始=新点(); 点结束 =new Point(); JButton 椭圆=新 JButton("椭圆"); JButton 矩形=新 JButton("矩形"); JButton line=new JButton("Line"); 选择字符串; 公共 test_bmp() 颜色=颜色.黑色; setBorder(BorderFactory.createLineBorder(Color.black)); addMouseListener(this); addMouseMotionListener(this); 公共无效paintComponent(图形g) //super.paintComponent(g); g.drawImage(图像, 0, 0, 这个); Graphics2D g2 = (Graphics2D)g; g2.setPaint(Color.black); 如果(选择==“椭圆”) g2.drawOval(start.x, start.y, (end.x-start.x),(end.y-start.y)); System.out.println("开始:"+start.x+","+start.y); System.out.println("结束:"+end.x+","+end.y); 如果(选择==“行”) g2.drawLine(start.x,start.y,end.x,end.y); //在缓冲图像上绘制 公共无效绘制() Graphics2D g2 = image.createGraphics(); g2.setPaint(颜色); System.out.println("画"); 如果(选择==“行”) g2.drawLine(start.x, start.y, end.x, end.y); 如果(选择==“椭圆”) g2.drawOval(start.x, start.y, (end.x-start.x),(end.y-start.y)); System.out.println("开始:"+start.x+","+start.y); System.out.println("结束:"+end.x+","+end.y); 重绘(); g2.dispose(); 公共JPanel addButtons() JPanel 按钮面板=新 JPanel(); buttonpanel.setBackground(color.lightGray); buttonpanel.setLayout(new BoxLayout(buttonpanel,BoxLayout.Y_AXIS)); elipse.addActionListener(this); 矩形.addActionListener(this); line.addActionListener(this); buttonpanel.add(椭圆); buttonpanel.add(Box.createRigidArea(new Dimension(15,15))); buttonpanel.add(矩形); buttonpanel.add(Box.createRigidArea(new Dimension(15,15))); buttonpanel.add(line); 返回按钮面板; 公共静态无效主(字符串参数 []) test_bmp 应用程序=新的 test_bmp(); //主窗口 JFrame frame=new JFrame("白板"); frame.setLayout(new BorderLayout()); frame.add(application.addButtons(),BorderLayout.WEST); 框架。添加(应用程序); //窗口大小 frame.setSize(600,400); frame.setLocation(0,0); frame.setVisible(true); int w = frame.getWidth(); int h = frame.getHeight(); image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); g2.setPaint(Color.white); g2.fillRect(0,0,w,h); g2.dispose(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @覆盖 公共无效mouseClicked(MouseEvent arg0) // TODO 自动生成的方法存根 @覆盖 公共无效鼠标输入(鼠标事件 arg0) // TODO 自动生成的方法存根 @覆盖 公共无效mouseExited(MouseEvent arg0) // TODO 自动生成的方法存根 @覆盖 public void mousePressed(MouseEvent 事件) 开始 = event.getPoint(); @覆盖 public void mouseReleased(MouseEvent 事件) 结束 = event.getPoint(); 画(); @覆盖 公共无效鼠标拖动(鼠标事件e) 结束=e.getPoint(); 重绘(); @覆盖 公共无效鼠标移动(鼠标事件 arg0) // TODO 自动生成的方法存根 @覆盖 公共无效actionPerformed(ActionEvent e) 如果(e.getSource()==椭圆) 选择=“椭圆”; 如果(例如getSource()==线) 选定="行"; 画();

我需要创建一个绘画应用程序。当我通过从左到右拖动鼠标来绘制椭圆时,它什么也不显示。为什么?我应该在这里使用任何其他功能吗?

【问题讨论】:

【参考方案1】:

当您向下和向右拖动鼠标时,您的程序绘制一个椭圆。它向上和/或向左拖动不起作用,因为Graphics.drawOval 不适用于负宽度或高度。

尝试添加这样的方法:

private Shape createEllipse() 
    Ellipse2D e = new Ellipse2D.Double();
    e.setFrameFromDiagonal(start, end);
    return e;

然后像这样从drawpaintComponent 调用它:

if(selected=="elipse") 
    g2.draw(createEllipse());

另外,您可能不需要在actionPerformed 末尾调用draw()。如果您在直线和椭圆模式之间切换,它将绘制一个与最近的直线具有相同坐标的椭圆,反之亦然。

还有一个编码风格问题:对selected 使用字符串字面量是令人困惑的(尽管它确实有效。)我会改为定义一个枚举。

【讨论】:

感谢它工作正常,但我无法理解这里的逻辑。有什么解释吗? 该方法的目的是构造一个矩形,其中一个角为start(可以是4个角中的任何一个),另一角为end,并使用该矩形作为边界椭圆的盒子。我将其更改为使用setFrameFromDiagonal。我希望现在更清楚了。

以上是关于为啥在java中不能导入awt包的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Python 类初始化变量不能用于包导入中的类实例对象,但否则?

linux python 包安装了 为啥包不能导入

为啥我不能在汇总配置文件中使用 ES6 导入/导出?

1.IDEA明明已经导入了jar包为啥还是提示找不到类?

为啥我不能将 apache.thrift 导入 IntelliJ 项目?

JAVA,为啥我不能引用gson包?