Estoy tratando de trazar una línea (línea roja en la imagen) sobre varios paneles, pero parece que no puedo hacer que funcione. ¿Cómo puedo hacer esto posible? ¿Alguna sugerencia?Dibujar líneas sobre varios paneles en Java
Respuesta
dibujar sobre la glass pane.
o al JViewPort +1 – mKorbel
@mKorbel ehh ... la ventana gráfica (si la hay) es _below_ el panel ... – kleopatra
personalmente, no entiendo del todo las puntas del panel: es (por cierto, difícil de manejar)) propiedad de rootPane, que es el hijo directo de un contenedor de nivel superior. Entonces, ¿qué eres tú (y otros recientemente, eres el desafortunado hoy en día :-) realmente sugieres: administrar las pinturas superpuestas vidriadas en una base por cuadro? utilizar un rootPane en otro lugar? copiar la parte del código de rootPane que está gestionando glassPane en otro contenedor? Realmente curioso ... – kleopatra
JDK 7 agregó JLayer to support visual decorations en la parte superior de los componentes arbitrarios. Para versiones anteriores, está el proyecto JXLayer at java.net que en realidad es su predecesor, con una API muy similar
Aquí hay un ejemplo rudimentario, que usa una LayerUI personalizada que dibuja una línea recta desde un componente en un contenedor hasta otro componente en un contenedor diferente. El padre común de los dos contenedores está decorado con un JLayer usando ese ui:
JComponent comp = Box.createVerticalBox();
final JComponent upper = new JPanel();
final JButton upperChild = new JButton("happy in upper");
upper.add(upperChild);
final JComponent lower = new JPanel();
final JButton lowerChild = new JButton("unhappy in lower");
lower.add(lowerChild);
comp.add(upper);
comp.add(lower);
LayerUI<JComponent> ui = new LayerUI<JComponent>() {
@Override
public void paint(Graphics g, JComponent c) {
super.paint(g, c);
Rectangle u = SwingUtilities.convertRectangle(upper, upperChild.getBounds(), c);
Rectangle l = SwingUtilities.convertRectangle(lower, lowerChild.getBounds(), c);
g.setColor(Color.RED);
g.drawLine(u.x, u.y + u.height, l.x, l.y);
}
};
JLayer<JComponent> layer = new JLayer<JComponent>(comp, ui);
J (X) Capa es muy útil código +1 – mKorbel
- 1. Cómo podemos dibujar líneas entre 2 paneles en columpio
- 2. Información sobre herramientas en paneles
- 3. Dibujar varias líneas con Java Swing
- 4. Dibujar líneas punteadas en un WPF adorner
- 5. ¿Cómo dibujar líneas horizontales en openLayers?
- 6. personalizada al dibujar sobre lienzo
- 7. OpenGL: Dibujar líneas con VBO
- 8. Dibujar líneas múltiples en una Imagen Buffered
- 9. ¿Cuándo elegir varios procesos sobre subprocesos en Java?
- 10. Dibujar líneas punteadas con OpenGL-ES
- 11. Dibujar rectángulo sobre la imagen
- 12. Un panel de actualización frente a varios paneles de actualización
- 13. ¿Cómo agrego paneles dinámicamente a otros paneles en tiempo de ejecución en Java?
- 14. Dibujar texto sobre lienzo en el ángulo
- 15. Agregar líneas nuevas faltantes en varios archivos
- 16. cómo dibujar líneas de cuadrícula con libgdx
- 17. Cómo dibujar líneas suaves con antialias
- 18. Algoritmo para dibujar líneas gruesas antialias
- 19. C# Dibujo en Paneles
- 20. En matlab, cómo dibujar una grilla sobre una imagen
- 21. Detección de aciertos al dibujar líneas en iOS
- 22. cómo dibujar autómatas en Java
- 23. Dibujar líneas de cuadrícula en valores específicos en xyplot
- 24. GWT Deslice entre Páginas/Paneles
- 25. matplotlib graficación interactiva (dibujar líneas manualmente en un gráfico)
- 26. OpenCV dibujar una imagen sobre otra imagen
- 27. Dibujar un sobre alrededor de una curva
- 28. ¿Cómo dibujar líneas verticales en el gráfico de Highcharts?
- 29. ¿Hay un SDK para dibujar líneas en iOS con toque?
- 30. Cómo dibujar un rectángulo de líneas discontinuas en el lienzo?
BTW - buena imagen, pero por favor córtelos más pequeños en el futuro. Reemplacé el original con una versión recortada (430 × 375px). –