Sto provando a disegnare una linea (linea rossa nell'immagine) su più pannelli, ma non riesco a farlo funzionare. Come posso renderlo possibile? Eventuali suggerimenti?Disegna linee su più pannelli in Java
risposta
Disegnare sul glass pane.
o su JViewPort +1 – mKorbel
@mKorbel ehh ... il viewport (se presente) è _below_ il pannello ... – kleopatra
personalmente, non capisco perfettamente i puntatori nudi del glassPane: è un (btw, difficile da gestire) proprietà di rootPane, ovvero figlio diretto di un contenitore di livello superiore. Allora, cosa sei (e altri di recente, oggi sei lo sfortunato :-)? Davvero un suggerimento: gestisci le sovrapressioni vitree su una base per frame? utilizzare un rootPane altrove? copia la parte del codice rootPane che sta gestendo il glassPane in un altro contenitore? Davvero curioso ... – kleopatra
JDK 7 aggiunto JLayer to support visual decorations sopra componenti arbitrari. Per le versioni precedenti, c'è il progetto JXLayer at java.net che in realtà è il suo predecessore con API molto simili
Ecco un esempio rudimentale, utilizzando un LayerUI personalizzato che disegna una linea retta da un componente in un contenitore a un altro componente in un contenitore diverso. Il genitore comune dei due contenitori è decorato con un JLayer usando quell'interfaccia utente:
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) Layer è un codice molto utilizzabile +1 – mKorbel
- 1. SwitchCompat disegna linee aggiuntive
- 2. Disegna linee orizzontali in Chart.js 2.0
- 3. OpenCV C++ Disegna rettangolo basato su due linee
- 4. Disegna linee continue su tela HTML una dopo l'altra
- 5. Disegna linee dall'asse x ai punti
- 6. Disegna linee tra i marker nel volantino
- 7. Disegna linee curve in ggmap, geom_curve non funziona
- 8. Wicket - pannelli riutilizzabili con java ereditarietà
- 9. Autoshrink su un UILabel con più linee
- 10. Come modificare più linee su Xcode (collegamento)
- 11. Disegna rettangolo su SurfaceView
- 12. linee più lunghe in leggenda()
- 13. Pipeline linee di rails: compila su più fogli di stile
- 14. Come dividere i comandi lunghi su più linee in PowerShell
- 15. non interferisce con lo stile in linea su più linee?
- 16. Combinazioni di pannelli univoche con blocchi - Codice in Java
- 17. comando bash si estende su più linee con diverse linee di commenti in-tra
- 18. Scala: Disegna tabella su console
- 19. Disegna separatore verticale su UITableViewCell
- 20. Libgdx SpriteBatch disegna su StencilBuffer?
- 21. Disegna video su tela HTML5
- 22. Disegna testo con oggetto grafico su JFrame
- 23. Disegna una linea con un angolo specifico in Java
- 24. Java Graphics2D - disegna un'immagine con opacità sfumata
- 25. Disegna un'altra immagine su una UIImmagine
- 26. Interfaccia della riga di comando Java: con più barre di avanzamento su linee diverse utilizzando '\ r'
- 27. Disegna i poligoni in modo più efficiente con matplotlib
- 28. Disegna un cerchio in una tela con più colori sfumati
- 29. Disegna aree sovrapposte su un solo percorso
- 30. Dimensionamento di una TextView su più linee Android
BTW - bella immagine, ma per favore li ritaglia più piccoli in futuro. Ho sostituito l'originale con una versione ritagliata (430 × 375 px). –