2010-08-10 130 views
0

其可能是一个愚蠢的问题,但我很好奇,要了解这件事情...... 下面的代码工作,但下面的代码不起作用。Java编程风格

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Menu extends JFrame 
{ 

public Menu() 
{ 

JMenuBar menubar = new JMenuBar(); 
ImageIcon icon = new ImageIcon("exit.png"); 
JMenu file = new JMenu("File"); 
file.setMnemonic(KeyEvent.VK_F); 
JMenuItem fileClose = new JMenuItem("Close",icon); 
fileClose.setMnemonic(KeyEvent.VK_C); 
fileClose.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent event) 
{System.exit(0);} 
}); 


file.add(fileClose); 
menubar.add(file); 
setJMenuBar(menubar); 


setVisible(true); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
setSize(300,200); 
setLocationRelativeTo(null); 
} 


public static void main (String args[]) 
{ 
new Menu(); 
} 


} 

下面的一个不起作用

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Menu extends JFrame 
{ 

public Menu() 
{ 


setVisible(true); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
setSize(300,200); 
setLocationRelativeTo(null); 

JMenuBar menubar = new JMenuBar(); 
ImageIcon icon = new ImageIcon("exit.png"); 
JMenu file = new JMenu("File"); 
file.setMnemonic(KeyEvent.VK_F); 
JMenuItem fileClose = new JMenuItem("Close",icon); 
fileClose.setMnemonic(KeyEvent.VK_C); 
fileClose.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent event) 
{System.exit(0);} 
}); 


file.add(fileClose); 
menubar.add(file); 
setJMenuBar(menubar); 


} 


public static void main (String args[]) 
{ 
new Menu(); 
} 


} 

我认为Java支持自由式编码! (这是它在我的书中所说的)

PS:请有人编辑瓷砖以正确地适应问题,我不知道标题中应该放什么。

+0

你做结束看到那些实际代码在这些例子中有所不同,对吧?我的意思是,超越风格。在第一组方法中定义了 – 2010-08-10 04:31:24

+0

之后的JmenuBar。而在第二个它写了。我一直习惯在顶部声明我的其他代码,直到现在。 PS。大约3小时前,我开始学习秋千。 – subanki 2010-08-10 04:38:50

回答

1

你的第二个代码示例中的问题是,在你真正添加东西到GUI之前,你打电话给setVisible。你说:“这里的一些东西,现在证明”,而在第二个你说“显示,现在这里的一些东西

修复:移动调用setVisible到构造

+0

所以最后总是调用setVisible是一个好习惯。或者我应该在主类中定义它。还请关注setSize,setLocationRelativeTo等其他设置方法,我应该在哪里调用它们? – subanki 2010-08-10 04:49:50

+0

你可以在任何地方调用'setVisible',只要在你设置了GUI之后它**。为了清楚起见,我总是把它放在构造函数的最后。你提到的其他方法在'setVisible'之前的任何地方都很好,因为它们只在绘图时使用 – TheLQ 2010-08-10 05:05:02