C'è un modo semplice per bloccare le proporzioni di un componente GridLayout in Java Swing? O dovrebbe essere fatto su JPanel che contiene quel layout?Come bloccare le proporzioni di un gridLayout in Java?
5
A
risposta
7
GridLayout
ignora efficacemente dimensione preferita di un componente, ma è possibile controllare la aspect ratio di tutto ciò che è disegnato in paintComponent()
, come mostrato in questo example. La forma renderizzata rimane circolare (aspetto 1: 1), mentre (quasi) riempie il contenitore nella dimensione più stretta. Ridimensiona la cornice per vedere l'effetto.
Addendum: Ad esempio, ho aggiunto N * N
istanze di CirclePanel
a GridLayout
di seguito.
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
/**
* @see https://stackoverflow.com/a/9858355/230513
* @see https://stackoverflow.com/a/3538279/230513
*/
public class SwingPaint {
private static final int N = 4;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(N, N));
for (int i = 0; i < N * N; i++) {
frame.add(new CirclePanel());
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
});
}
private static class CirclePanel extends JPanel {
private static final Random r = new Random();
public CirclePanel() {
this.setPreferredSize(new Dimension(80, 80));
this.setForeground(new Color(r.nextInt()));
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
CirclePanel.this.update();
}
});
}
public void update() {
this.setForeground(new Color(r.nextInt()));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension size = this.getSize();
int d = Math.min(size.width, size.height) - 10;
int x = (size.width - d)/2;
int y = (size.height - d)/2;
g.fillOval(x, y, d, d);
g.setColor(Color.blue);
g.drawOval(x, y, d, d);
}
}
}
Problemi correlati
- 1. Java Swing GridLayout "Intervallo celle"?
- 2. Come gestire le diverse proporzioni in libGDX?
- 3. Come mantenere le proporzioni in bitmap disegnabile
- 4. Mantenere le proporzioni di un div in base all'altezza
- 5. Come mostriamo la griglia in GridLayout?
- 6. Come bloccare tutte le tabelle in un mysql db?
- 7. Nascondi riga in GridLayout
- 8. Unità viewport, mantenendo le proporzioni?
- 9. Mantenere le proporzioni di un QWidget sottoclassato durante il ridimensionamento
- 10. Estensione di GridLayout
- 11. Come utilizzare margini e paddings con Java GridLayout
- 12. Android - Differenza tra Gridlayout e Gridlayout Stagger
- 13. Elenco tutte le variabili (e le loro proporzioni) in un sottoinsieme di un dataframe
- 14. Come ridimensionare un'immagine mantenendo le proporzioni in CSS?
- 15. Come bloccare un metodo java per proteggere più chiamate
- 16. Come posso forzare un'immagine per mantenere le proporzioni in WPF?
- 17. Proporzioni in UIImageView
- 18. Come bloccare le dipendenze nelle app Haskell
- 19. Come bloccare le funzioni AJAX dalla sovrapposizione?
- 20. Conservare le proporzioni in grafici di R griglia
- 21. Calendar GridLayout
- 22. Come bloccare un changeset dall'unione in TFS?
- 23. Come bloccare un utente in QuickBlox?
- 24. Mantieni le proporzioni dell'immagine nel carosello
- 25. Come bloccare un carousel in Sencha Touch
- 26. Come si scorre un GridLayout all'interno di Kivy ScrollView?
- 27. Come posso tracciare le proporzioni relative di due gruppi usando un riempimento estetico in ggplot2?
- 28. Come posso bloccare un mutex in un elenco di inizializzatore?
- 29. webrtc - ottieni le proporzioni della webcam
- 30. CSS: mantenere le proporzioni senza traboccare contenuti
Ci deve essere qualcosa per cui non si dispone di alcun esempio, mi chiedo !!!! :-) –
Sono un fan di [sscce] (http://sscce.org/). :-) – trashgod
OK, quindi roba dovrebbe essere fatto in paintComponent. Mi sono divertito, non ho ancora risolto il problema. Al momento, sto cercando di inserire la mia rete in un JPanel intermedio (JPanel -> intermedio JPanel -> GridLayout). Sto cercando di controllare la dimensione di questo JPanel intermedio nel paintComponent della radice JPanel. Come ti senti a riguardo? Havent ha funzionato ancora ... – Jerome