有没有一种方法可以在public static void main(string args[])中不使用static



包摆动训练;

import static java.awt.Color.BLACK;
import java.awt.GridBagConstraints;
import static java.awt.GridBagConstraints.CENTER;
import static java.awt.GridBagConstraints.NORTH;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JFrameTest extends JFrame{
public JFrameTest(){
    setSize(800,800);
    setTitle("Hello :D");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setResizable(true);
    setVisible(true);
}
public class GridBagLayoutTest extends GridBagLayout{
        public GridBagLayoutTest(){
        setLayout(new GridBagLayout());
        };
};
public static class JPanelTest extends JPanel{
        public JPanelTest() {
        setBackground(BLACK);
        setOpaque(true);      
    }
}          

public static class JButtonTest extends JButton{
          public JButtonTest(){

          };
        };

public void main(String args[]){
        java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
        JFrameTest T = new JFrameTest();
        JPanelTest Jp1 = new JPanelTest();
        JButtonTest Jb1 = new JButtonTest();
        GridBagLayoutTest Gb1 = new GridBagLayoutTest();
        GridBagConstraints c = new GridBagConstraints();
        c.ipadx = 100;
        c.ipady = 100;
        c.gridheight = 1;
        c.gridwidth = 1;
        c.weightx = 1;
        c.weighty = 1;
        c.insets = (new Insets(0,0,0,500));
        Jb1.setLayout((LayoutManager) c);
        T.add(Jp1);
        Jp1.add(Jb1);

        }
    });   
}  
}

编译这个时,我收到一条消息,说我没有主方法。如果我把我的主方法设为静态,我就不能在run()中使用layoutManager,所以我想知道如何才能通过。或者,也许是让layoutManager在这个例子中工作的另一种方法。

如注释中所述,否,如果没有具有该确切签名的主方法,就无法执行java类。

public static void main(String args[])

我已经清理了一些你的代码。它仍然是你的代码,但更整洁。您不需要在每次需要特定背景或其他内容时都将JPanelJButtonGridBagLayout划分为子类。只需实例化原始类,并使用其已定义的方法来设置其属性。

   import java.awt.Color;     // no static import needed
   import java.awt.GridBagConstraints;
   import java.awt.GridBagLayout;
   import java.awt.Insets;
   import javax.swing.JButton;
   import javax.swing.JFrame;
   import javax.swing.JPanel;
   import javax.swing.SwingUtilities;
   public class JFrameTest extends JFrame {
       public JFrameTest() {
       setSize(800,800);
       setTitle("Hello :D");
       setDefaultCloseOperation(EXIT_ON_CLOSE);
       setLocationRelativeTo(null);
       setResizable(true);
       initComponents();  // <- Include your components in the main frame
       setVisible(true);
  }
  private void initComponents() {
      // Use meaningful names for your variables
      // Respect Java naming conventions. No variable name start with a capital letter.         
      JPanel panel = new JPanel();
      panel.setBackground(Color.BLACK);    
      panel.setOpaque(true);
      panel.setLayout(new GridBagLayout()); // no need for static access
      JButton button = new JButton();
      GridBagConstraints gbc = new GridBagConstraints(); // this is not a Layout. It represents constrains to be used in the GribBagLayout on adding an element
      gbc.ipadx = 100;
      gbc.ipady = 100;
      gbc.gridheight = 1;
      gbc.gridwidth = 1;
      gbc.weightx = 1;
      gbc.weighty = 1;
      gbc.insets = (new Insets(0,0,0,500));
      panel.add(button, gbc);
      add(panel);   // <- this.add(panel) where this is your instance of JFrameTest
   }

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

您需要在主方法中执行以下操作。

        GridBagLayoutTest Gb1 = T.new GridBagLayoutTest();

在java中,main方法是启动应用程序的入口点。它不像我们创建的其他方法,我们可以根据需要和想法提供名称、参数、返回类型。由于main方法是一种特殊的方法,因此它得到了一个定义的签名

main的签名(必填项:publicstatic,返回类型:void,输入参数:String[],方法名称:main,所有字母小写)如下

public static void main(String[] args)

这是JVM在执行应用程序时读取的方法,我们应该在其中包含初始化代码

  1. 您可以创建静态init()方法,并从main调用init()
  2. 您可以创建类的对象,并调用用于进一步执行程序的方法

这些只是关于如何在main中编写代码的提示,但为了执行我们的应用程序,尊重主方法的约定是很重要的。

相关内容

  • 没有找到相关文章

最新更新