2017-02-02 16 views
0

Я хочу использовать родительский класс, желательно Компонент (являющийся наивысшим классом класса AWT, о котором я знаю). Я не новичок в программировании, но я сам преподаю, и у меня проблемы с получением кода примера для моего вопроса. Вот мой код:Каков самый простой способ отображения графического чертежа в Java AWT?

import java.awt.Frame; 
public class DrawSquare extends Frame{ 
    public DrawSquare(){ 
     setBounds(0,0,100,100); 
     setVisible(true); 
    } 
    public static void main(String[]args){ 
     new DrawSquare(); 
    } 
} 

В основном я хочу сделать то же самое с одним из родителей класса «возможно» иметь более быстрый и эффективный код. Я предполагаю, что Frame имеет больше встроенных параметров, таких как граница, в то время как Window (родительский класс) этого не делает, но я смог сделать этот простой код с помощью Frame.

Я хочу использовать AWT, а не размахивать кстати.

+0

Я не понимаю вопроса - но у вас нет графики, чтобы начать с того, где она? – gpasch

+0

эта программа делает квадрат 100x100 в углу экрана, расширяя рамку. Расширяя что-либо еще, он не будет отображаться. – christgrinder

+0

Почему вы хотите избежать Swing, так или иначе? Вся текущая документация (например, [this] (https://docs.oracle.com/javase/tutorial/uiswing/painting/)) предназначена для Swing, и вам не стоит ничего использовать. – VGR

ответ

0

По моим тестам:

class C extends Component { 
    public C() { setSize(200, 200); setVisible(true); } 
    public void paint(Graphics g) { 
    g.drawRect(0, 0, 100, 100); 
    } 
} 

не будет отображаться, потому что предположительно это нужно что-то нужно добавить к.

class C extends Container { 
    public C() { setSize(200, 200); setVisible(true); } 
    public void paint(Graphics g) { 
    g.drawRect(0, 0, 100, 100); 
    } 
} 

не будет отображаться, потому что это контейнер, поэтому ему необходимо добавить другие предметы.

class C2 extends Window { 
    public C2() { super(new Frame()); setLocation(100, 100); setSize(200, 200); setVisible(true); } 
    public void paint(Graphics g) { 
    g.drawRect(0, 0, 100, 100); 
    } 
} 

может отображаться, но не имеет ничего, чтобы захватить вокруг, и это даже не показывает на панели задач так его бесполезную вещь, если вы не добавите его где-нибудь.

Так

class C extends Frame { 
    public C() { setSize(200, 200); setVisible(true); } 
    public void paint(Graphics g) { 
    g.drawRect(0, 0, 100, 100); 
    } 
} 

ваше решение как первое, что является как компонент и Container.

+0

Спасибо, это в значительной степени то, что я искал. Я не мог понять, как заставить Window работать, потому что я не использовал ключевое слово super, я делал это: public C (владелец окна) {}. Теперь у меня есть окно в качестве опции, но оно кажется таким же сложным. Я возился с Canvas, но не мог этого отобразить. Я уже объяснял причины, по которым вы указали, почему Component и Container не будут отображаться. – christgrinder

+0

Каждый из этих переопределенных методов рисования должен сначала вызвать метод супер. «Самый простой» подход не всегда устойчив. –

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

  • Нет связанных вопросов^_^