2015-04-11 4 views
-3

Этот код не заполнит прямоугольник. Я попытался расширить JComponent, но получил ошибку. Как расширить JComponent?Моя программа не будет рисовать Вот код:

package com.lewis.GooseEgg; 
import java.awt.*; 
import java.awt.image.BufferStrategy; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 

public class GooseEgg extends Canvas{ //I couldn't extend JComponent 
             //How would I also extend JComponent 
    protected void paintComponent(Graphics g){ 
     g.setColor(Color.BLACK); 
     g.fillRect(0,0, 100, 100); 
    } 

public static void main(String[] args) { 
    //This is just all the basic stuff I learned       
    JFrame frame = new JFrame(); 
    GooseEgg goose = new GooseEgg(); 
    frame.setResizable(false); 
    frame.setTitle("Goose Egg"); 
    frame.add(goose); 
    frame.pack(); 
    frame.setSize(900, 900); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    //The website keeps asking me to add more detail because it says my post is mostly code so I added this. If anyone wants to tutor me at Java 
    //I could pay money. 
    } 

} 
+0

Вы должны добавить сообщение об ошибке, которое вы получили, и местоположение, где оно появилось ... «ошибка» довольно неспецифична ;-) Почему вы хотите распространяться как с Canvas, так и с JComponent? – siegi

ответ

0

Вам не нужно проходить от Canvas и JComponent: Вы должны распространяться только от JComponent.

Также вы не должны делать pack() и setSize(…). Они оба задают размер вашего фрейма, это не имеет смысла. Либо сделайте pack() (в этом случае вам также необходимо указать предпочтительный размер, например, переопределив getPreferredSize() или установив его setPreferredSize(…)) или сделать setSize(…).

Изменение Canvas до JComponent и удаление вызова метода pack(), похоже, дает правильный результат.

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