2014-01-06 37 views
1

我有兩個按鈕來編輯文本中的字體。大膽的按鈕和斜體按鈕,分開,他們工作正常,但不togheter。我如何讓我的按鈕可以工作? (粗體+斜體)setFont()問題

final JToggleButton boldbuttonpage1 = new JToggleButton(""); 
     boldbuttonpage1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       if(boldbuttonpage1.isSelected()){ 
        textpage1.setFont(new Font("Arial", Font.BOLD, 12)); 
       } 
       else textpage1.setFont(new Font("Arial", Font.PLAIN, 12)); 
      } 
     }); 
     boldbuttonpage1.setBounds(21, 32, 27, 23); 
     gtapage1.add(boldbuttonpage1); 

     final JToggleButton italicbuttonpage1 = new JToggleButton(""); 
     italicbuttonpage1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       if(italicbuttonpage1.isSelected()){ 
        textpage1.setFont(new Font("Arial", Font.ITALIC, 12)); 
       } 
       else textpage1.setFont(new Font("Arial", Font.PLAIN, 12)); 
      } 
     }); 
     italicbuttonpage1.setBounds(21, 93, 27, 23); 
     gtapage1.add(italicbuttonpage1); 
+1

從問題的標題中移除Java的 - 它已經在你的代碼,並從標題中移除的「日蝕」,你的問題無關使用Eclipse。 –

回答

2

當設置一個按鈕按壓的字體,則覆寫以前的字體,否定從先前的按鈕按壓的任何可能的影響。我自己,我會同時有兩個ActionListeners(或ItemListeners)調用相同的方法,一個檢查兩個按鈕的狀態並設置相應的按鈕值的字體。

此外,根據我的評論,擺脫Eclipse標籤,而是添加一個Swing標籤到您的問題,所以它不會誤導任何人。 Eclipse只是您用作IDE的工具,並不會影響您的問題。另外,不應該設置組件邊界或使用空佈局,而是要使用適當的佈局管理器。


編輯
你問:

的方法來檢查按鍵的狀態?你能詳細說明一下嗎?

你已經知道如何檢查你的按鈕的狀態,用你的​​方法調用。當按下按鈕時,而不是僅檢查一個按鈕,請同時檢查這兩個按鈕。事實上,你可以給兩個按鈕相同的ActionListener:

ActionListener actionListener = new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    // check selected states of both button one and two and set font accordingly 
    // you can use if (foo && bar) {...} 
    // else if (foo) {...} 
    // else if (bar) {...} 
    // else {.. default...} 
    } 
}; 
button1.addActionListener(actionListener); 
button2.addActionListener(actionListener); 
+0

一種檢查按鈕狀態的方法?你能詳細說明一下嗎? – MrSilent

+0

@MrSilent:見編輯回答。 –

+0

知道了,我現在就試試。 – MrSilent