【问题标题】:Failed to make my own drawing widget on java [closed]无法在 java 上制作我自己的绘图小部件 [关闭]
【发布时间】:2016-07-30 02:50:33
【问题描述】:

我坚持使用 4 行代码。 他们应该让我创建自己的小部件。

但似乎缺少main方法。

我尝试自己编写一个主类并在paintComponent() 方法中创建一个对象,但没有成功。

我知道我不应该自己调用该方法,但是当我运行程序时,我收到错误 Main method not found in class...。

有人可以解释一下这是如何工作的或给我一个阅读链接吗?

这是我尝试过的简单代码:

import javax.swing.*;

import java.awt.*;

class MyDrawPanel extends JPanel {

    public void paintComponent(Graphics g) {
        g.setColor(Color.orange);
        g.fillRect(20, 50, 100, 100);
    }
}

【问题讨论】:

    标签: java eclipse swing


    【解决方案1】:

    如果您是 Java 新手,我建议您在 Tutorials | Javatpoint 上留 4-5 天。

    Java 规则是 java 文件名应该与包含 main 方法的类名匹配。

    所以一个简单的main方法代码:

    class Simple {  
        public static void main(String args[]) {  
        System.out.println("Hello Java");  
        }  
    }  
    

    在这种情况下,这段代码应该在 Simple.java 文件中。

    【讨论】:

    • 我正在学习一本书,Head First Java, 2nd Edition,它被称为它实际上非常好。直到现在我都没有问题。但问题是这本书只给了我上面的代码行。正如你所说,我尝试创建 main,然后调用 MyDrawPanel,但它确实有效:/
    • 好的,很好。我希望你解决了你的问题。如果是,请确保也将答案标记为已接受。
    【解决方案2】:

    试试这个简单的代码,应该对你有帮助:

    import javax.swing.*;
    import java.awt.*;
    
    public class MyDrawPanel extends JPanel {
    
        private static final int WIDE = 300;
        private static final int HIGH = 200;
    
    
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.orange);
            g.fillRect(20, 50, 100, 100);
        }
    
        public MyDrawPanel() {
            setBackground(Color.white);
            // Set a initial size for the program window
            this.setPreferredSize(new Dimension(WIDE, HIGH));
        }
    
         private void display() {
            // Some statements to let the JFrame appear in a good way
            JFrame f = new JFrame("MyDrawPanel");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(this);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
        }
    
         // Main method is called when the program is runned
         public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new MyDrawPanel().display();
                }
            });
        }
    }
    

    输出:

    【讨论】:

    • 谢谢你的实际工作..!很多未知的东西..我会尝试解密它们:)..非常感谢.!
    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多