2013-07-13 5 views
2

Я попытался реализовать простое приложение GUI, имея класс, расширяющий JPanel, а затем добавляя его в кадр и добавляя кнопку, но ничего не происходит, когда я нажимаю кнопку. Что не так?Неверный вывод со следующим кодом

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

class dup extends JPanel { 

    public void paintComponent(Graphics g) { 

     Graphics2D g2d = (Graphics2D) g; 

     g2d.setColor(Color.green); 

     g2d.fillRect(0, 0, this.WIDTH, this.HEIGHT); 
     System.out.println("inside paint component class"); 
    } 
} 

public class drawing implements ActionListener { 
    JFrame frame; 
    dup d1; 

    public static void main(String args[]) { 
     drawing d2 = new drawing(); 
     d2.go(); 
    } 

    public void go() { 
     frame = new JFrame(); 
     JButton button = new JButton("click me"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     d1 = new dup(); 
     button.addActionListener(this); 

     frame.getContentPane().add(BorderLayout.WEST, button); 
     frame.getContentPane().add(BorderLayout.CENTER, d1); 
     frame.setSize(300, 300); 
     frame.setVisible(true); 

    } 

    public void actionPerformed(ActionEvent ae) { 
     frame.repaint(); 

    } 
} 

Что не так?

+0

Вы видите сообщение об отладке «компонент внутренней краски»? – Tarik

+0

. Изучите общие [соглашения об именах Java] (http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307) (в частности, для имен) для класса, методы и атрибуты и использовать их последовательно. Но +1 для публикации SSCCE. :) –

+0

Кроме того, в вашем методе 'actionPerformed()', если вы попытаетесь изменить значения для 'dup (JPanel)' для того, чтобы он был возвращен на него, тогда я думаю, вам нужно использовать 'd1.repaint() ', а не' frame.repaint() ' –

ответ

1

Ширина и высота неправильные. Это должно быть

g2d.fillRect(0, 0, this.getWidth(), this.getHeight()); 

Вы использовали константы из ImageObserver класса вместо ширины и высоты свойства компонента.

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