2010-08-10 99 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