GUI tanpa spasi putih muncul 'ramai'. Bagaimana saya bisa memberikan ruang putih tanpa menggunakan pengaturan posisi atau ukuran komponen secara eksplisit?
java
swing
whitespace
layout-manager
Andrew Thompson
sumber
sumber
Jawaban:
Menggunakan berbagai
LayoutManagers
satu dapat menyediakan jarak antara berbagai komponen.1.) BorderLayout:
Metode pengambil dan penyetel
Untuk Horizontal Spacing : BorderLayout.getHgap () dan BorderLayout.setHgap (int hgap)
Untuk Penempatan Vertikal : BorderLayout.getVgap () dan BorderLayout.setVgap ()
2.) FlowLayout:
Metode pengambil dan penyetel
Untuk Horizontal Spacing : FlowLayout.getHgap () dan FlowLayout.setHgap (int hgap)
Untuk Penempatan Vertikal : FlowLayout.getVgap () dan FlowLayout.setVgap ()
3.) GridLayout:
Metode pengambil dan penyetel
Untuk Horizontal Spacing : GridLayout.getHgap () dan GridLayout.setHgap (int hgap)
Untuk Penempatan Vertikal : GridLayout.getVgap () dan GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( contoh ):
CardLayout (int hGap, int vGap)
Contoh untuk menampilkan semua konstruktor dalam aksi:
OUTPUT:
sumber
Ada beberapa cara dalam GUI Swing untuk memberikan pemisahan antara komponen, dan ruang putih di sekitar komponen:
JToolBar
memiliki metodeaddSeparator()
&addSeparator(Dimension)
.JMenu
menggunakan komponen jarak yang lebih cocok untuk menu, tersedia melaluiaddSeparator()
.Tetapi lebih umum, lihat:
Berikut adalah contoh penggunaan pemisah tata letak
hGap
&vGap
nilai & batas (khusus anEmptyBorder
) untuk memberikan ruang 'putih' (sebenarnya ditampilkan sebagai merah untuk membuatnya sangat jelas). Sesuaikan pemintal untuk melihat hasilnya.sumber
Saat Anda menggunakan
BoxLayout
,Box.createVerticalGlue()
metode dapat membantu Anda membuat ruang putih.Metode lain adalah
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Ini dapat membantu Anda membuat ruang putih di sekitar komponen.Terima kasih atas pengingat Andrew Thompson. Saya telah merevisi BoxLayout dalam beberapa hari terakhir dan saya menemukan bahwa
Box.createVerticalGlue()
dapat menambahkan beberapa ruang putih bergantung pada ukuran panel dan Anda tidak dapat menetapkan nilai piksel eksplisit dari panjang ruang putih. TetapiBox.createVerticalStrut()
dapat melakukan itu. Berikut ini adalah MCTaRE dan menunjukkan efek dari kedua metode tersebut.Box.createHorizontalGlue()
danBox.createHorizontalStrut(int height)
bisa digunakan juga. Selain itu,Box.createRigidArea(Dimension d)
memiliki kemampuan juga menciptakan ruang putih juga.sumber
MigLayout
memiliki banyak cara untuk menciptakan ruang. (Sebuah ruang disebut celah dalam tata letak ini.) Kesenjangan dapat dibuat pada tingkat tertinggi dengan kendala tata letak, dimungkinkan untuk membuat kesenjangan antara baris dan kolom dan kesenjangan juga dapat diatur antara komponen individu dengan kendala komponen. Ada juga celah khusus di sekitar perbatasan wadah yang disebut insets yang memiliki kata kunci spesifik mereka sendiri untuk ditetapkan.Contoh berikut membuat semua jenis celah ini:
Kami memiliki empat panel dalam tata letak. Masing-masing panel ini memiliki
MigLayout
manajer.Baris ini menciptakan inset wadah dan celah vertikal antar panel.
Di sini kita menerapkan celah untuk seluruh struktur grid dan juga mengatur celah kontainer.
Baris ini menciptakan celah antar kolom.
Kesenjangan baris didefinisikan dengan kode ini.
Akhirnya, dimungkinkan untuk membuat celah di antara masing-masing komponen.
sumber
JGoodies FormLayout .
Penulis Karsten Lentzsch memiliki koleksi presentasi tentang desain UI. Secara khusus PDF ini berbicara tentang perlunya ruang putih estetika. Menambahkan ruang yang berarti sambil juga memperhatikan kekacauan memisahkan gandum dari sekam.
sumber
Setiap kali saya memiliki masalah ini, saya hanya menggunakan JPanels. Misalnya di dalam GridLayout:
Semoga ini bisa membantu :)
sumber