Почему это меняет цвет фона для java.awt.Canvas, меняет фон для всего кадра?Java AWT: настройка фона Canvas меняет фон для всего кадра
Я создал объект кадра следующим образом:
public class Gui extends Frame {
public Gui() {
setSize(800, 600);
setLocation(0, 0);
Canvas cd=new Canvas();
cd.setSize(500, 300);
cd.setBackground(Color.BLUE);
add(cd);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
}
@Override
public void paint(Graphics g) {
paintComponents(g);
}
public static void main(String[] args) {
Gui g=new Gui();
g.setVisible(true);
}
}
Приведенный выше код устанавливает размер кадра, чтобы быть 800х600, а затем добавляет значительно меньший холст к нему - 500x300, и, наконец, устанавливает цвет фона, чтобы быть Color.BLUE
, но вместо того, чтобы получить 500x300 синий прямоугольник внутри большей, 800х600 оконной рамы (с серым цветом по умолчанию), то результат будет 800х600 кадра с синим фоном:
Документы говорят:
общественного недействительный setBackground (цвет с)
Устанавливает цвет фона этого компонента.
Цвет фона влияет на каждый компонент по-разному, а части компонента, на который влияет фоновый цвет, могут различаться между операционными системами .
Может быть, проблема (я запускаю это на Ubuntu)?
Или я пропустил что-то еще здесь?
Не ждите, чтобы получить помощь на depricated вещи, они даже не учат их в колледже больше. – Mordechai
Зачем использовать AWT? См. [Этот ответ] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) по многим причинам, чтобы отказаться от использования AWT с использованием компонентов в пользу Swing. –
Я использую AWT, потому что мне нужно использовать JFreeChart (http://www.jfree.org/jfreechart/api/javadoc/), который поддерживает только компоненты AWT, насколько я знаю ... –