2014-09-24 40 views
-3

我一直在用java按鈕,我創建了一個按鈕,但是當我按一下按鈕,我想要的物體的形狀改變。這是我第一次上如何操作按鈕添加在java中

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
public class shapes { 
public static void main(String[] a) { 
    JFrame f = new JFrame("Change shapes"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JButton b = new JButton("Shapes Change"); 
    f.getContentPane().add(b); 
    f.pack();  
    f.setVisible(true); 




} 

Public void paint (Graphics g) 
{ 
    //no clue what to do here 

} 
private static abstract class MyButton extends JButton implements ActionListener { 
MyButton() 
{ 
    addActionListener(this); 
} 

    public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == b) 
     { 

       //no clue what to do here 

      } 
} 
} 
} 

曾在代碼中,有創造的形狀,一旦按鈕被點擊它,我想將它更改爲另一種形狀。

+0

沒有人知道你的規範,更新,所以你應該告訴我們你想要做我們說不出什麼ü – 2014-09-24 06:26:26

回答

3

有確實應該是任何需要繼承JButton。如果您想自定義按鈕,則可以使用Action API,請參閱How to Use Actions

進行自定義繪圖你應該延伸像JComponentJPanel並重寫paintComponent方法...

Swing組件見Performing Custom Painting瞭解更多詳情。

你會那麼需要提供一些方法,你可以打電話告訴形狀應該改變其形狀應如何更改組件。

你會再爲你的按鈕ActionListener引用烤漆面板的實例,並調用這些方法的手段......

0

您只需添加一個ActionListener到按鈕:

b.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     // do some action 
    } 
}); 

一其他值得注意的事項:

  1. 您不應該在Event Dispatch Thread (EDT)之外運行Swing方法,否則您可能會遇到不可預知的錯誤。
  2. Java naming conventions指定類名應該大寫。在你的代碼中,你將類命名爲「形狀」,但將其命名爲「形狀」更爲恰當。
0

首先聲明,並定義繪圖對象的方法。例如drawSquare(),drawCircle()可以繪製所需的形狀。定義單選按鈕或類似的東西來獲得用戶選擇(知道哪個對象必須被繪製)。在的actionPerformed()檢查選擇哪個單選按鈕,並調用適當的方法繪製對象並調用重繪(),用於用戶界面