2013-03-16 86 views
-2

你好家伙我正在从这个网站学习java。我想在不放入main的情况下制作java文件,以便与其他文件轻松连接。我的意思是我想制作这个子文件。所以你们可以帮我从这个文件中删除主文件并运行它。如何运行此文件删除主

这里是我的代码

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Font; 

import javax.swing.BorderFactory; 
import javax.swing.JColorChooser; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

/* ColorChooserDemo.java requires no other files. */ 
public class jptborder extends JPanel{ 

protected JColorChooser tcc; 
protected JLabel banner; 

public jptborder() { 
super(new BorderLayout()); 

//Set up the banner at the top of the window 
banner = new JLabel("Welcome To this border Example", 
JLabel.CENTER); 
banner.setForeground(Color.red); 
//banner.setBackground(Color.blue); 
banner.setOpaque(true); 
banner.setFont(new Font("Arial", Font.BOLD, 24)); 
banner.setPreferredSize(new Dimension(450, 65)); 

JPanel bannerPanel = new JPanel(new BorderLayout()); 
bannerPanel.add(banner, BorderLayout.CENTER); 
bannerPanel.setBorder(BorderFactory.createTitledBorder("Welcome")); 

add(bannerPanel, BorderLayout.CENTER); 

} 
public static void createAndShowGUI() { 
//Create and set up the window. 
JFrame frame = new JFrame("jptBorder"); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

//Create and set up the content pane. 
JComponent newContentPane = new jptborder(); 
newContentPane.setOpaque(true); //content panes must be opaque 
frame.setContentPane(newContentPane); 

//Display the window. 
frame.pack(); 
frame.setVisible(true); 
} 

public static void main(String[] args) { 
//Schedule a job for the event-dispatching thread: 
//creating and showing this application's GUI. 
javax.swing.SwingUtilities.invokeLater(new Runnable() { 
public void run() { 
createAndShowGUI(); 
} 
}); 
} 
} 
+0

你只是删除从代码的主要方法以上(甚至不需要),在另一个java文件中创建一个main方法,编译另一个文件并运行它。这不适合你吗?请解释你可能被卡住的地方。 – 2013-03-16 16:18:57

+1

请在上面格式化您的代码,以便它可读。 – 2013-03-16 16:26:22

+0

来自其他类的调用... classObject.method() – 2013-03-16 16:26:44

回答

1

达到你想要什么,你应该保持的主要方法在另一个类。那里你可以拨打jptborder createAndShowGUI。例如:

public class MainClass 
{ 
    public static void main(String st[]) 
    { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() 
    { 
    @Override 
    public void run() 
    { 
     jptborder.createAndShowGUI(); 
    } 
    }); 
    } 
} 

,然后编译并运行MainClass

+0

它在 显示错误avax.swing.SwingUtilities.invokeLater(new Runnable() – 2013-03-16 16:37:37

+0

@Nachinne_Manche:我的错误。我忘了写'public static void main' ..代码现在更新。 – 2013-03-16 16:45:49

1

为您的主文件和文件为您jptborder类,然后从你的主要参考类。确保它们在相同的包装中并且彼此可见。

public static void main(String args[]) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      JptBorder border = new JptBorder(); // To use your constructor 
      JptBorder.createAndShowGUI(); to use your static method 
     } 
    }); 
} 

其他的一切都会在你JptBorder类文件。

2

在另一个文件中创建另一个类并将主要方法移入其中。

要了解更多:JLS 12. ExecutionThe Java Tutorial

JPTBorderLauncher.java

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class JPTBorderLauncher extends JFrame { 
    public JPTBorderLauncher() { 
     super("jptBorder"); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     add(new jptborder()); 
     pack(); 
     setVisible(true); 
    } 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     @Override public void run() { new JPTBorderLauncher(); }}); 
    } 
} 

jptborder.java

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Font; 

import javax.swing.BorderFactory; 
import javax.swing.JColorChooser; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingConstants; 

public class jptborder 
    extends 
     JPanel 
{ 
    protected JColorChooser tcc; 
    protected JLabel  banner; 

    public jptborder() { 
     super(new BorderLayout()); 
     banner = new JLabel("Welcome To this border Example", 
          SwingConstants.CENTER); 
     banner.setForeground(Color.red); 
     banner.setOpaque(true); 
     banner.setFont(new Font("Arial", Font.BOLD, 24)); 
     banner.setPreferredSize(new Dimension(450, 65)); 
     JPanel bannerPanel = new JPanel(new BorderLayout()); 
     bannerPanel.add(banner, BorderLayout.CENTER); 
     bannerPanel.setBorder(BorderFactory.createTitledBorder("Welcome")); 
     add(bannerPanel, BorderLayout.CENTER); 
    } 
} 

结果:

enter image description here

+0

是的,它工作了谢谢你 – 2013-03-16 16:36:57

+0

'public class JPTBorderLauncher extends JFrame {'这里不需要扩展框架,只需要使用一个实例。 – 2013-03-17 01:12:37