首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在没有在main方法中调用的情况下运行paint()?

在Java中,可以通过以下几种方法在不调用main方法的情况下运行paint()方法:

  1. 使用Swing库创建一个简单的GUI应用程序,并在其中重写paint()方法。
代码语言:java
复制
import javax.swing.*;
import java.awt.*;

public class MyApp extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // 在这里编写paint()方法的内容
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("MyApp");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new MyApp());
        frame.pack();
        frame.setVisible(true);
    }
}
  1. 使用JavaFX库创建一个应用程序,并在其中重写paint()方法。
代码语言:java
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MyApp extends Application {
    @Override
    public void start(Stage primaryStage) {
        StackPane root = new StackPane();
        Scene scene = new Scene(root, 300, 275);
        primaryStage.setTitle("MyApp");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
  1. 使用AWT库创建一个简单的应用程序,并在其中重写paint()方法。
代码语言:java
复制
import java.awt.*;
import java.awt.event.*;

public class MyApp extends Frame implements WindowListener {
    public MyApp() {
        setSize(300, 200);
        setTitle("MyApp");
        addWindowListener(this);
        setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        // 在这里编写paint()方法的内容
    }

    public static void main(String[] args) {
        MyApp app = new MyApp();
    }

    // 实现WindowListener接口的其他方法
    public void windowOpened(WindowEvent e) {}
    public void windowClosing(WindowEvent e) {System.exit(0);}
    public void windowClosed(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
}

以上三种方法都可以在不调用main方法的情况下运行paint()方法。具体选择哪种方法取决于您的应用程序需求和使用的库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有abi文件情况下调用智能合约方法,web3py实现

,也就是 abi 没有公开。...确定函数调用签名 也就是 0xb45112b2 区块链合约代码执行,需要指定某个合约地址某个函数,其中这个执行函数是使用 Keccak-256(SHA-3)编码后散列,取散列前四个字节作为函数签名...官方定义:"签名被定义为没有数据位置说明符基本原型规范表达式,即具有带括号参数类型列表函数名称"。...1,搜索网上签名数据库:https://www.4byte.directory/signatures/ 搜索结果如下: 说明还没有上传函数 abi 定义 2,没有函数 abi 信息,就没办法调用了吗...', abi=jsobjs['abi'] ) 再就是调用方法 搞定问题 1,查看 webpy 代码,显然这样调用是不支持

2.3K30
  • 为什么都2022年了还有人用Java写GUI?

    大家好,我是小面,今天给大家分享一下如何在Java中使用几何图形。 虽然工作很少用到,某些场合还是有用,比如说Eclipse,IDEA 就是用java写GUI,现在这个IDE不是还是很红么?...如何在Java创建形状 Java创建2D几何图形第一步是向paint()函数提供Graphics参数。paint(Graphics g)函数,您可以调用特定2D对象类。...以下部分描述了程序员如何使用Java绘制常见几何图形。 如何在Java画一条线 您可以使用drawLine(int x1,int y1,int x2,int y2)方法创建一条简单直线。...某些情况下,程序员可能希望创建一个圆角矩形。...例如: drawArc(45, 75, 150, 150, 0, 360) 如何在Java绘制椭圆 drawOval(int x,int y,int width,int height)方法允许您绘制绑定在给定宽度和高度矩形椭圆

    1.9K30

    Java学习之多线程

    Java线程优先级设置遵从下列规则: 线程创建时,子线程继承父线程优先级。 线程创建后,可在程序通过调用setPriority()方法改变线程优先级。...3.3 线程同步 由于Java支持多线程,并具有并发功能,大大提高了计算机处理能力。各线程之间不存在共享资源情况下,几个线程执行顺序是随机。...为了不发生混乱,规定:生产者往货架上放货物时不允许消费者取走货物,当消费者取走货物时不允许生产者放货物。这种机制操作系统称为线程间同步。同步机制,那些访问临界资源程序段称为临界区。...:同时启动,挂起或终止一个线程组全部线程。 Java系统专门java.lang包中提供了ThreadGroup类来实现对线程组管理功能。...大多数情况下,一个线程属于哪个线程组是由编程人员程序中指定,若编程人员没有指定,则java系统会自动将这些线程归于“main”线程组。main线程组是java系统启动时创建

    42540

    Chrome 插件:自己写插件提示请停用以开发者模式运行插件处理方法,该拓展程序未列chrome网上应用商店,并可能是您不知情情况下添加解决办法

    第一章:问题描述 该方法可以解决如下两个问题 ① 问题一:请停用以开发者模式运行插件 我们自己写插件通过开发者模式添加进来后,每次都会提示请停用以开发者模式运行插件,添加插件白名单即可解决。...② 问题二:该拓展程序未列 chrome 网上应用商店,并可能是您不知情情况下添加 或者我们安装了打包后插件,即 crx 格式插件,直接提示该拓展程序未列 Chrome 网上应用商店,...并可能是您不知情情况下添加,添加插件白名单也可解决问题。...把打包后插件拖进拓展程序里。 此时一般会出现这个问题: 该拓展程序未列 Chrome 网上应用商店,并可能是您不知情情况下添加。请继续操作即可解决问题。 ?...③ 将插件 id 添加到拓展程序白名单 拓展程序里配置拓展程序安装白名单,把我们插件 id 加进来就好了。 ? ?

    4.3K30

    Android之View绘制问题汇总

    measure完成后,可以通过getMeasuredWidth/Height()方法,就能获得View测量宽高 一定极端情况下,系统需要多次measure,因此得到值可能不准确,最好办法是onLayout...方法获得测量宽/高或者最终宽/高 6、如何在Activity启动时获得View宽/高?...Activity生命周期与Viewmeasure不是同步运行,因此onCreate/onStart/onResume均无法正确得到 若在View没有测量好时,去获得宽高,会导致最终结果为0 7、Activity...:不应该在ondraw创建Paint对象。Paint类提供了reset方法。可以初始化View时创建对象。 要避免冗余代码,提高效率。 复合View,要减少布局层级。...避免任何情况下调用默认参数invalidate 调用有参数invalidate进行局部和子View刷新,能够提高性能。

    1.1K20

    Android-2D绘图

    Canvas类:画布 Android系统绘图操作主要是Canvas画布上进行绘图时,使用是前面设置好Paint画笔。...接着,设置画布背景为白色,绘制直线时调用drawLines方法,指定跳过前4个数据,取出12个数据绘制直线。 ?...接着设置画笔线宽以及空心效果,这样将绘制出空心矩形。最后,调用drawRect方法画布上绘制了两个矩形。第一种方法采用Rect对象方式,第二种方法通过指定矩形四个边方式。...接着设置画笔线宽以及空心效果,这样将绘制出空心矩形。最后,调用drawRect方法画布上绘制了一个矩形,调用drawRoundRect方法画布上绘制了一个圆角矩形。 ?...画布上绘制字符串是经常用到操作,Android系统提供了非常灵活绘制字符串方法,可以根据不同需要调用不同方法来实现。字体大小、样式等信息都需要在Paint画笔来指定。

    5.1K20

    Python 装饰器和闭包

    if __name__ == "__main__":    print("start painting!!!")    wall() 运行结果: ready to paint!...闭包 通常函数里声明局部变量作用范围是函数内,而未声明变量视为全局变量,如果连全局变量都没有声明,就是 bug 了。...但是往往我们需要装饰器实现作用是:增强一部分逻辑基础上,不改变原函数属性和方法。而 Python 标准库 functools.wraps 就是实现这个功能。...所以带参数装饰器需要两层嵌套结构才能实现。 单分派泛函数 程序,一种很常见场景就是需要根据一个变量取不同值时,分别调用不同函数或对象来适应不同应用场景。...用类来实现装饰器做法跟函数一样,同样是需要语法糖 @ ,然而 @ 是直接调用后面的对象,所以这里跟函数不同是,需要实现类 __init__ 方法来接受参数, __call__ 方法来实现调用

    48620

    C#接口知识大全收藏建议收藏

    ,不管这些父接口有没有类定义基类表列出。...EditBoxPaint方法 12 13  } 14 15 }   上述代码对editbox.Paint( )调用是错误,因为editbox 本身并没有提供这一方法。...{...} 16 17 }   TextBox 方法Paint 隐藏了Control方法Paint ,但是没有改变从Control.Paint 到IControl.Paint 映射,而通过类实例和接口实例调用...现在部署任何COM 组件都可以接口转换中使用。通常情况下,所需调整是完全自动进行。   特别是,可以使用运行时可调用包装 (RCW) 从 .NET 框架访问 COM 组件。... C#(和 .NET 框架),指示已经发生错误标准方法是引发异常。 默认情况下,.NET 框架为由其调用 COM 接口方法两种异常处理类型之间提供自动映射。

    1.9K20

    【设计模式】代理模式那些事儿:静态代理,动态代理,JDK动态代理,cglib,Spring AOP

    画画耗时:" + (end - start) + "毫秒"); } } 可以看出,如果想要Pony画画时候添加一些诸如记录执行时间,记录日志这样动作时候,就要在实现paint()方法时候添加时间...但是,这不合理呀,我Pony明明只需要处理画画逻辑就行了啊!也简单,把时间处理、日志处理这些东西交给别人去做,可以把别人看成代理,这些代理分别持有paint()方法代理内部实现画画之外事情。...重点是第三个参数,该参数是一个InvocationHandler,动态代理方法执行时,会调用InvocationHandler类里面的invoke方法去执行。...我main方法里只调用了painter.paint();啊,怎么连执行耗时:7881毫秒这句话也打印出来了呢?...我们可以Ponypaint()方法执行前切入before(),执行后切入after(),也就是说可以指定点切入代理所要做事情,这就是简单面向切面了。

    30220

    【Flutter 绘制技巧】Path 路径变换

    本文来探讨一下路径变换,我们知道 Canvas 本身也支持变换,那 Path 变换有什么必要性吗?和 Canvas 变换又有什么区别呢?如何在一次变换叠加多种变换效果,如何修改变换中心?...void main() { runApp(CustomPaint( painter: PathPainter(), )); } 可以看出默认情况下,以画布左上角为原点。...一次变换,通过平移,可以改变变换中心。比如下面左上角红色虚线路径,通过 平移变换 ,形成如下黑线路径。...也就是说这个方法会返回一个新 Matrix4 对象,不会影响调用内部数据。 而 multiply 方法,如下所示:是根据矩阵乘法,来修改自身数据。...所以如果调用者需要在后续被使用,可以通过 Matrix4#multiplied 返回个新。如果不需要被使用,通过 Matrix4#multiply 方法直接修改自身数据即可。

    1.3K10

    Flutter:如何使用 CustomPaint 绘制心形

    “ 作为程序员其实也有浪漫一幕,今天我们一起借助CustomPaint和CustomPainter绘制心形,本文将带您了解 Flutter 中使用CustomPaint和CustomPainter...闲话少说(比如谈论 Flutter 历史或它有多华丽),让我们深入研究代码并制作一些东西。 ” 例子 预览 我们将创建 4 个心形。第一个没有边界,但其他有。...完整代码,它生成了上面屏幕截图中显示很酷心形: // main.dart import 'package:flutter/material.dart'; void main() { runApp...CustomPaint 小部件和 CustomPainter 类更多详细信息: 自定义绘制小部件 CustomPainter 类 后记 您已经学会了如何在不使用任何第三方软件包情况下从头开始绘制自定义心形...此时,您应该对 Flutter 绘图有了更好了解。

    99120

    Flutter:如何使用 CustomPaint 绘制心形

    “作为程序员其实也有浪漫一幕,今天我们一起借助CustomPaint和CustomPainter绘制心形,本文将带您了解 Flutter 中使用CustomPaint和CustomPainter绘制心形端到端示例...闲话少说(比如谈论 Flutter 历史或它有多华丽),让我们深入研究代码并制作一些东西。” 例子 预览 我们将创建 4 个心形。第一个没有边界,但其他有。...完整代码,它生成了上面屏幕截图中显示很酷心形: // main.dart import 'package:flutter/material.dart'; void main() { runApp...CustomPaint 小部件和 CustomPainter 类更多详细信息: 自定义绘制小部件 CustomPainter 类 后记 您已经学会了如何在不使用任何第三方软件包情况下从头开始绘制自定义心形...此时,您应该对 Flutter 绘图有了更好了解。

    1.1K10

    Java-GUI编程之绘图

    绘图 很多程序各种小游戏都需要在窗口中绘制各种图形,除此之外,即使开发JavaEE项目时,有时候也必须"动态"地向客户 端生成各种图形、图表,比如 图形验证码、统计图等,这都需要利用AWT绘图功能...Component类,提供了下列三个方法来完成组件图形绘制与刷新: ​ paint(Graphics g):绘制组件外观; ​ update(Graphics g):内部调用paint方法,刷新组件外观...; ​ repaint():调用update方法,刷新组件外观; 一般情况下,update和paint方法是由AWT系统负责调用,如果程序要希望系统重新绘制组件,可以调用repaint方法完成。...画图步骤: 1.自定义类,继承Canvas类,重写paint(Graphics g)方法完成画图; 2.paint方法内部,真正开始画图之前调用Graphics对象setColor()、setFont...其实画图核心就在于使用Graphics画笔Canvas画布上画出什么颜色、什么样式图形,所以核心画笔上,下表列出了Graphics类中常用一些方法方法名称 方法功能 setColor(Color

    1.1K00

    Flutter 绘制探索 3 | 深入分析 CustomPainter 类 | 七日打卡

    左侧是程序运行paint方法栈帧情况,当前 ShapePainter.paint 方法处于栈顶,其下方法都是方法还未执行完毕方法,它们都在等着栈顶方法退栈。..._paintWithPainter ShapePainter.paint 之下,说明 ShapePainter.paint方法里被调用。如下所示,点击栈帧方法时,会进行跳转。...来到 RenderCustomPaint 类 _paintWithPainter 方法内,ShapePainter.paint调用那一行,这就是 debug 强大之处。 ?...---- 通过调试可以看到方法调用情况,但很多方法一块,会让人觉得很乱,有时走着走着自己就乱了,不知道干嘛。...RenderObject#_paintWithContext 方法做了很多断言操作,其本身并没有什么复杂逻辑,就调用了一下该类 paint 方法,将上面传来绘制上下文回调出去。

    1.9K10

    大前端时代乱流:带你了解最全面的 Flutter Web

    如下图所示是 GSY 一个简单开源示例项目,部署到服务器后可以看到,默认情况下在不做任何处理时, PC 端打开后会使用 canvaskit 渲染,主要会有: 2.3 MB main.dart.js...但是不幸是,如下图所示,在当前 2.10 版本下该配置运行会有 bug ,而不幸万幸是,原生平台编译 shake-icons 行为是可以正常执行。...null 时候 paint.maskFilter == null 简单说就是 Container 等控件没有配置 shadow 时候 paint.shader == null 简单说就是 Container...true ,这时候渲染就会直接进入使用 Element 绘制而无视其他条件 BoxShadow ,从运行结果上看也是如此。...还记得前面列举方法吗,需要进入 _applyDomPaint 就需要 hasArbitraryPaint == false,换言之就是没有文本,然后 drawRect 时候没有 shader( radient

    2K40

    Android 自定义 view 之自定义布局属性 xml 属性

    上面我们先定义了属性,又在布局对其赋值,那么实际,我们如何在自定义控件里,获得它实际值呢?...让我们先写下构造方法构造方法获得这些值大小: private int textSize; private String textText; private int textColor...obtainStyledAttributes 方法又两个参数,第二个参数就是我们styles.xml文件 标签,即属性集合标签,R文件名称为R.styleable+name 然后根据 array...一般来说,它方法有两个属性,第一个参数为属性集合里面的属性,R文件名称:R.styleable+属性集合名称+下划线+属性名称,第二个参数为,如果没有设置这个属性,则设置默认值 最后记得将TypedArray...由于构造方法,我们已经获得基本值,所以 onDraw() ,将这些东西绘制出来就行了,这里直接上代码: @Override protected void onDraw(Canvas

    99410

    Android图片加载框架最全解析(五),Glide强大图片变换功能

    ()方法打印了ImageView默认scaleType,然后重新运行一下程序,结果如下图所示: ?...由此我们可以得知,没有明确指定情况下,ImageView默认scaleType是FIT_CENTER。 有了这个前提条件,我们就可以继续去分析Glide源码了。...回顾一下第二篇文章我们分析过into()方法,它是GenericRequestBuilder类当中,代码如下所示: public Target into(ImageView...可以看到,这里第7行会进行一个switch判断,如果ImageViewscaleType是CENTER_CROP,则会去调用applyCenterCrop()方法,如果scaleType是FIT_CENTER...() .into(imageView); 可以看到,这里调用了一个dontTransform()方法,表示让Glide加载图片过程不进行图片变换,这样刚才调用applyCenterCrop

    1.8K101
    领券