2012-08-31 50 views
2

問候,我試圖做到這一點:創建的JMenuitem在for循環

public float a=0; 

for(a=1 ; a<100;a++){ 
     String fuent="font"+String.valueOf((int)a); 
     JMenuItem fuent=new JMenuItem(String.valueOf(a)); 
     fuent.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){texto.setFont(texto.getFont().deriveFont(a)); current=a;}}); 
     tamano.add(fuent); 
     } 

但它拋出這些錯誤:

cambiar.java:71: error: variable fuent is already defined in constructor cambiar() 
     JMenuItem fuent=new JMenuItem(String.valueOf(a)); 
       ^

cambiar.java:72: error: cannot find symbol 
     fuent.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){texto.setFont(texto.getFont().deriveFont(a)); current=a;}}); 
      ^

symbol: method addActionListener(<anonymous ActionListener>) 
    location: variable fuent of type String 
2 errors 
[Finished in 0.5s with exit code 1] 

我試圖做到這一點:

JMenuItem (String)fuent=new JMenuItem(String.valueOf(a)); 
JMenuItem System.out.println(fuent)=new JMenuItem(String.valueOf(a)); 

但沒有作品。

---編輯---- 我覺得有些迷惑約我想要什麼:

String fuent="font"+String.valueOf((int)a); 
     JMenuItem fuent=new JMenuItem(String.valueOf(a));//(Here sould go the value of the String, Example "font1") 
     fuent.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){texto.setFont(texto.getFont().deriveFont(a)); current=a;}}); 
     tamano.add(fuent); //(Same Here) 

回答

2

你跟他定義的兩個不同的變量名稱相同

String fuent ="font"+String.valueOf((int)a); 
JMenuItem fuent =new JMenuItem(String.valueOf(a)); 

嘗試重命名一個或兩者例如

String strFuent="font"+String.valueOf((int)a); 
JMenuItem miFuent=new JMenuItem(String.valueOf(a)); 

更新示例

JMenuItem fuent=new JMenuItem("font"+String.valueOf((int)a)); 

將解決你的問題

後OP編輯

這還是不行更新中...

String fuent="font"+String.valueOf((int)a); // You have defined fuent as a String 
// Here you are trying to define fuent AGAIN as a JMenuItem 
// You CAN NOT DO THIS... 
// Change one of the variable names 
JMenuItem fuent=new JMenuItem(String.valueOf(a));//(Here sould go the value of the String, Example "font1") 
fuent.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){texto.setFont(texto.getFont().deriveFont(a)); current=a;}}); 
tamano.add(fuent); //(Same Here) 

這將現在的工作...

String fuent1="font"+String.valueOf((int)a); // You have defined fuent as a String 
JMenuItem fuent=new JMenuItem(fuent1); 
fuent.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     texto.setFont(texto.getFont().deriveFont(a)); current=a; 
    } 
}); 
tamano.add(fuent); //(Same Here) 
+0

float在類之外公開,我知道的名字,問題是想要將JMenuItem命名爲String的值「Fuent」 –

+0

float與它無關。您不能使用相同的名稱或標籤得到兩個變量。你唯一能做的就是改變變量名稱。您提供給菜單項的文本是不相關的 – MadProgrammer

+0

您是否閱讀過我編輯的內容?...我試圖讓JmenuItem具有該字符串的值...例如: String hi =「Button1」; JMenuItem「Button1」(字符串的值).... –

1

你應該學習Java的基礎知識,因爲你的代碼有主要的基本問題(float a不能在public中定義,除非它真的在別的地方,你只是把它放在那裏來顯示它)。您無法爲變量定義兩次相同的名稱;調用一個fuentMenu和一個fuentString或其他。

+0

float是公共類外部的名字,我知道,問題是想要命名JMenuItem作爲字符串「Fuent」 –