Pregunta

Tengo un jrame en la que agrego algunos objetos JComponent. Cada JComponent tiene una lista de contenedores agrego utilizando JComponent.add (Componente).

Ahora en mi principal clase JComponent, llamado MyComponent, puedo reemplazar el paintComponent método protegido donde se puede pintar cosas, que funciona bastante bien.

Pero no quiero pintar en el principal JComponent, yo sólo quiero pintar en los contenedores he añadido a mi principal JComponent.

Así que en MyComponent en paintComponent hago lo siguiente.

protected void paintComponent( Graphics g) {
  super.paintComponent( g);

  Graphics page_g = this.getPage( "main").getGraphics();

  page_g.setColor( Color.RED);
  page_g.drawRect( 10, 10, this.getWidth() - 20, this.getHeight() - 20);
  page_g.setColor( Color.BLUE);
  page_g.drawString( "HELLO WORLD", this.getWidth() / 2, this.getHeight() / 2);
}

El this.getPage línea ( "principal") getGraphics ().; toma el objeto de gráficos de una de mis contenedores añadidos a la lista MyComponents de contenedores y por supuesto a la lista principal componente usando JComponents Agregar método. El recipiente se establece en visible llamando a la setVisible (true); método.

Pero no pasa nada. La pantalla está vacía. Si se sustituyen con page_g g, entonces la pintura de obras, porque su pintura en mi JComponent (MyComponent), pero quiero pintar en el envase que es para niños de MyComponent en este caso.

A menudo me escuchó "getGraphics uso Nunca ()". Pero de qué otra manera se puede dibujar de acuerdo a subcomponentes de un componente de los padres cuando el método se llama a los padres paintComponent?

¿Fue útil?

Solución

Realmente la mejor apuesta es tener las clases que en realidad están haciendo el cuadro de anulación de encargo su método propio paintComponent (). Dejar que el AWT preocupación acerca de los contextos gráficos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top