2015-05-19 28 views
0

每個人我有一個代碼,它創建一個圓圈和一個按鈕。圓圈在開始時有一個顏色,每次點擊它時,按鈕都必須改變這個圓圈的顏色,但是當它點擊時,它不會發出控制檯提供的錯誤。由於我是JAVA新手,我無法找到解決方案。下面是代碼:JAVA長寧a圖形顏色

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

public class GUI extends JPanel implements ActionListener { 

JFrame frame; 
public static void main(String[] args) { 

    GUI gui = new GUI(); 
    gui.go(); 

} 

public void go() { 

    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JButton button = new JButton("change colors"); 
    button.addActionListener(this); 

    MyDrawPanel drawPanel = new MyDrawPanel(); 

    frame.getContentPane().add(BorderLayout.SOUTH, button); 
    frame.getContentPane().add(BorderLayout.CENTER, drawPanel); 
    frame.setSize(300, 300); 
    frame.setVisible(true); 



} 


public void actionPerformed(ActionEvent event) { 

    frame.repaint(); 
} 


} 

我的功能重繪:

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

    public class MyDrawPanel extends JPanel { 




public void paintComponent(Graphics g) { 


    Graphics2D g2d = (Graphics2D) g; 

    int red = (int) (Math.random()*256); 
    int green = (int) (Math.random()*256); 
    int blue = (int) (Math.random()*256); 

    Color starColor = new Color(red, green, blue);  ; 


    red = (int) (Math.random() * 256); 
    green = (int) (Math.random() * 256); 
    blue = (int) (Math.random() * 256); 
    Color endColor = new Color(red, green, blue); 

    GradientPaint gradient = new GradientPaint(70, 70,starColor, 150, 150,endColor); 
    g2d.setPaint(gradient); 
    g2d.fillOval(70, 70, 100, 100); 

} 
} 
+0

如果您可以附加堆棧跟蹤或至少出現錯誤消息,將會有所幫助。 – QueryLars

+0

如果新來的Java,爲什麼不是Swing的GUI開發的JavaFX?知道區別? – mohsenmadi

回答

1

如果您在崗堆棧跟蹤這對我們來說更容易。但我想這個問題很清楚。

go - 方法,你在一個局部變量存儲JFrame有:

JFrame frame = new JFrame(); 

只需改變這一行:

frame = new JFrame(); 

這將實際存儲的方式變你想要 - 作爲類的成員變量GUI

+0

謝謝。有效。 –

+0

@EgeElgun不客氣。如果這回答您的問題,請接受答案,以便您的問題關閉。 – MalaKa