2010-11-07 4 views
1

Спокойной ночи! Я проверил следующий код, используя Кадр, но когда я пытаюсь рисовать автономную строку без каких-либо границ, кнопок и т. Д., Я обнаружил, что программа работает без каких-либо ошибок и не показывает никакой строки. Существует код:Какой-то глупый вопрос о контейнере, компоненте и видимом окне


package helloworld; 

import java.awt.*; 

class Line extends Component { 
    public void paint(Graphics g) { 
     g.drawLine(0, 0, getWidth(), getHeight()); 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
     Container c = new Container(); 
     c.add(new Line()); 
     c.setSize(400, 300); 
     c.setVisible(true); 
    } 
} 

Может быть, я узнал что-то неправильно, но если я использую кадров F = новый кадр() он работает отлично. Итак, что я делаю неправильно?

ответ

3

По умолчанию рамы имеют макет (BorderLayout), который позволяет размеру компонентов, которые вы вкладываете в них, чтобы заполнить рамку.

Контейнеры по умолчанию не имеют компоновки, поэтому линия не перемещается или не имеет размера - она ​​будет там, на 0,0 и нулевой ширине и высоте. Значит, ты этого не увидишь.

См. Руководство по планировщикам по адресу http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html

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