2016-09-06 3 views
2
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class SimpleGui3C implements ActionListener { 

JFrame frame; 

public static void main(String[] args) { 

    SimpleGui3C gui = new SimpleGui3C(); 
    gui.go(); 
} 

public void go() { 

    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.*; 
import java.awt.event.*; 

class MyDrawPanel extends JPanel { 

public void paintComponet(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 startColor = 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, startColor, 150, 150, endColor); 
    g2d.setPaint(gradient); 
    g2d.fillOval(70, 70, 100, 100); 

} 
} 

Так что я пытался решить эту проблему в течение 2 часов подряд и, похоже, не смог решить проблему. Эта «программа» должна иметь овал, и кнопка появляется в нижней части экрана, что позволяет мне рандомизировать цвет овала. Я использую netbeans, и всякий раз, когда я нажимаю пробег, я получаю это: screenshot Кто-нибудь есть любые решения для решения моих проблем? Извините за то, что потратил время, если это глупый вопрос.Java: Graphics2D

+0

Какие проблемы вы с? –

+0

Круг не отображается, как показано на фотографии. Тем не менее, внизу. – Lawleyenda

+0

Пожалуйста, разместите ссылку лучше. Ссылка должна быть на изображение, а не на веб-страницу. –

ответ

3

вопросы орфографии: paintComponet != paintComponent

Всегда предисловие ваших перегруженных методов с @Override. Если бы вы это сделали, вы, компилятор, предупредили вас о вашей ошибке.

Так это изменить:

public void paintComponet(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 startColor = 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, startColor, 150, 150, endColor); 
    g2d.setPaint(gradient); 
    g2d.fillOval(70, 70, 100, 100); 
} 

к этому:

@Override // don't forget this 
protected void paintComponent(Graphics g) { // spelling matters. Also make it protected 

    // !!!! don't forget this! 
    super.paintComponent(g); // to have the JPanel do housekeeping painting 

    Graphics2D g2d = (Graphics2D) g; 

    int red = (int) (Math.random() * 256); 
    int green = (int) (Math.random() * 256); 
    int blue = (int) (Math.random() * 256); 
    Color startColor = 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, startColor, 150, 150, endColor); 
    g2d.setPaint(gradient); 
    g2d.fillOval(70, 70, 100, 100); 
}  
+1

Ничего себе! Я буквально пересматривал этот код навсегда! И я не мог найти, что не так! Спасибо огромное! Надеюсь, что когда-нибудь я получу как можно больше кода. – Lawleyenda

Смежные вопросы