当前位置: 首页 > 知识库问答 >
问题:

如何让paintComponent使用我的代码?

秦才
2023-03-14

我尝试了多种方法来运行它。目的是绘制用户可以点击的圆圈。我无法在JGroup上绘制任何东西。我最初是在扩展JFrame,但意识到我需要扩展JGroup。我正在使用IntelliJ GUI Designer进行布局。我将非常感谢任何帮助。

package com.package;
import javax.swing.*;
import java.awt.*;

public class Main extends JPanel implements Runnable {
    private JPanel jPanel1;
    private JTabbedPane tabbedPane1;
    private JTextField textField1;
    private JButton submitButton;
    private JButton resetButton;
    private JPanel cartPanel;
    private JLabel imageLabel;
    private static Main instance;
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        g.fillOval(100,100,500,500);
        g.setColor(Color.YELLOW);
        g.fillOval(10, 10, 200, 200);
        // draw Eyes
        g.setColor(Color.BLACK);
        g.fillOval(55, 65, 30, 30);
        g.fillOval(135, 65, 30, 30);
        // draw Mouth
        g.fillOval(50, 110, 120, 60);
        // adding smile
        g.setColor(Color.YELLOW);
        g.fillRect(50, 110, 120, 30);
        g.fillOval(50, 120, 120, 40);

    }
    public Main(){
        JFrame jf = new JFrame();
        jf.setTitle("Defect Mapping");
        jf.setContentPane(this.jPanel1);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //this.setJMenuBar(jUnitMenuBar());
        ImageIcon img = new ImageIcon("C:\\Users\\jaitken\\IdeaProjects\\ERP\\icon.gif");
        jf.setIconImage(img.getImage());
        jf.pack();
        jf.setSize(1280, 720);
        jf.setResizable(false);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        run();
    }

    public void run(){
        instance = this;
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }

    }

}

这是IntelliJ表单设计器文件。

https://pastebin.com/Z3b0PVtZ

共有1个答案

席兴朝
2023-03-14
jf.setContentPane(this.jPanel1);

“jPanel1`变量为null。因此该语句不执行任何操作。

public class Main extends JPanel implements

自定义绘制是在“Main”类中完成的,但从未创建该类的实例或将面板添加到框架中。

阅读Swing教程中关于自定义绘制的部分,以获得更好的方法来构造代码并进行自定义绘制。我建议您重新开始并下载“步骤2”中的演示代码,作为代码的起点。

jf.pack();
jf.setSize(1280, 720);
jf.setResizable(false);

调用pack()的要点是,添加到框架中的所有组件都以其首选大小显示。正确完成自定义绘制后,自定义面板将具有首选大小。

调用setSize(...)违背了调用pack()的目的。摆脱语句。

此外,设置大小可调整(…) 语句需要在pack()语句之前调用,因为它会更改框架上装饰的大小。

run();

该语句应该是main()方法中的第一条语句。LAF必须在您创建Swing组件之前设置。

其目的是绘制用户可以单击的圆

完成基本绘制后,需要对其进行修复,以保留要绘制的形状的ArrayList,以便稍后确定用户单击的圆。签出:拖动绘制的形状以获取显示如何在面板周围单击和拖动形状的完整示例

 类似资料:
  • 我已经调试这段代码好几个小时了,试图让输出正确无误。它在早期工作,但输出中存在逻辑错误,因此我进入并在输出函数中添加了循环和一个额外参数。 现在g给我以下错误: Student.cpp:在成员函数“void Student::input data(std::string,int,STD::string 如何修复此代码?:

  • 这是我的pom: 如果您需要更多的信息,让我知道我会修改,但我的TestNG文件实际上只是调用一个测试类,没有任何修饰,如果我直接将它作为TestNG测试执行,它就可以工作。其余的代码可以工作,所以我假设不是这样。也许是Eclipse中的设置?

  • 这可能是一个很难回答的问题。我才刚开始学Java 我不懂paintComponent方法的操作。我知道如果我想画一些东西,我必须重写paintComponent方法。

  • 新手,大佬轻点喷,vue2项目,搜索框用的原生,请求数据用的axios 我在项目中写了一个搜索框,目前数据的静态的,我想动态获取数据,但数据是异步请求获取的,如果我像下面直接这样赋值会获取不到值,我想使用promise改写,请问以下应当如何改写 代码:

  • 还有,我的算法的运行时复杂度是多少。

  • 我有一个托管3个片段的活动,我的活动包含一些我希望我的第一个片段使用的数据。我尝试调用以下方法,以便活动可以与片段通信: 对于活动类和: 对于fragment类,但它在运行时对空对象引用错误调用虚拟方法“void com.tex.lightweatherforecast.FirstFragment.doSomething(java.lang.String)”。 我的活动代码是: 任何帮助将不胜感激