首页
学习
活动
专区
工具
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.4K30
  • 为什么都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)方法允许您绘制绑定在给定宽度和高度的矩形中的椭圆

    2K30

    Java学习之多线程

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

    42940

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

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

    5K30

    Android之View绘制问题汇总

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

    1.2K20

    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__ 方法来实现调用。

    48820

    【Flutter 组件】001-关于 Widget 的一切

    此方法是 Flutter 框架隐式调用的,在我们开发过程中基本不会调用到。 debugFillProperties(...) 复写父类的方法,主要是设置诊断树的一些特性。...为了在 diff 过程中,知道 Widget 有没有变化,就需要给 Widget 添加一个唯一的标识符,然后在 Widget树 的 diff 过程中,查看刷新前后的 Widget树 有没有相同标识符的...Flutter 中如何在 diff 过程中判断哪些 Widget 没有变化 稍微有些复杂,有两种情况: 默认情况下( Widget 没有设置 Key) 当没有给 Widget 设置 Key 时,Flutter...在一些场景下,Flutter 框架会将 State 对象重新插到树中,如包含此 State 对象的子树在树的一个位置移动到另一个位置时(可以通过GlobalKey 来实现)。...如果移除后没有重新插入到树中则紧接着会调用 dispose() 方法。 dispose():当 State 对象从树中被永久移除时调用;通常在此回调中释放资源。

    11310

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

    ,不管这些父接口有没有在类定义的基类表中列出。...EditBox的Paint方法 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毫秒这句话也打印出来了呢?...我们可以在Pony的paint()方法执行前切入before(),在执行后切入after(),也就是说可以在指定的点切入代理所要做的事情,这就是简单的面向切面了。

    30920

    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

    【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 中的绘图有了更好的了解。

    99720

    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

    2.1K40

    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

    1K10
    领券