Содержание апплета исчезает при изменении размера - PullRequest
0 голосов
/ 14 октября 2010

Я никогда не занимался разработкой апплетов.Пытаюсь что-то очень простое.В основном я рисую строку в окне.Однако всякий раз, когда я изменяю размер окна, содержимое исчезает.

Аналогичный предложенный вопрос о SO, который рекомендует переопределить метод update () для вызова repaint ().Я попробовал это, но это все еще не сделало это.Также как я могу центрировать строку («Hello World!») В окне (чтобы она оставалась центрированной даже при изменении размера)?

Вот код:

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JApplet;

public class TestApplet extends JApplet
{
 public void init(){
  setBackground (Color.gray);
 }
 public void paint (Graphics page){
  String name = "Hello World!";
  page.drawString(name,100,100);
 }

 public void update(Graphics page){
  this.repaint();
 }
}

1 Ответ

2 голосов
/ 14 октября 2010

Это старый код, используемый для приложений AWT.Никогда не следует переопределять методы paint () или update () в JApplet.

При использовании Swing пользовательское рисование выполняется путем переопределения метода paintComponent () в JPanel (или JComponent).Затем вы добавляете панель на панель содержимого апплета.

Прочтите раздел из учебного пособия по Swing по Custom Painting , где приведены примеры и дополнительные сведения.В руководстве также есть раздел «Как сделать апплеты», на который вам следует обратить внимание.

Также, как я могу центрировать строку («Hello World!») В окне (чтобы оно оставалосьцентрировано даже при изменении размера)

Получить размер родительской панели с помощью метода getSize ().Затем разделите на 2. Хотя вам нужно помнить, что координата Y - это нижняя часть текста, а не верхняя.Таким образом, вам также необходимо учитывать FontMetrics для шрифта, чтобы узнать точную высоту текста.Вы можете получить FontMetrics из объекта Graphics.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...