Rumah Java javaTutorial Mengapa JFrames Tidak Boleh Saiz Bertindih Apabila Menggunakan Windows Aero?

Mengapa JFrames Tidak Boleh Saiz Bertindih Apabila Menggunakan Windows Aero?

Dec 06, 2024 am 05:42 AM

Why Do Non-Resizable JFrames Overlap When Using Windows Aero?

Sempadan dan Kedudukan Tetingkap Tidak Boleh Ubah Saiz

Dalam situasi di mana JFrames tidak boleh ubah saiz digunakan dan Windows Aero didayakan, tingkah laku kaedah setLocation mungkin kelihatan tidak konsisten apabila mempertimbangkan sempadan tingkap.

Kepada menggambarkan tingkah laku ini, pertimbangkan coretan kod berikut:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import java.awt.Rectangle;

import javax.swing.JFrame;

public class FrameBorders {

    public static void main(String[] args) {

        JFrame frame1 = new JFrame("frame 1");

        JFrame frame2 = new JFrame("frame 2");

 

        frame1.setResizable(false);

        frame2.setResizable(false);

 

        frame1.setVisible(true);      

        Rectangle bounds = frame1.getBounds();     

        frame2.setLocation(bounds.x + bounds.width, bounds.y);

        frame2.setVisible(true);

    }

}

Salin selepas log masuk

Dengan kod ini, anda mungkin menjangkakan frame2 diletakkan di sebelah kanan frame1. Walau bagaimanapun, apabila Windows Aero didayakan, sempadan kedua-dua bingkai bertindih.

Penjelasan dan Penyelesaian

Windows Aero menggunakan penggayaan berbeza pada tetingkap yang tidak boleh diubah saiz, menghasilkan sempadan yang lebih tebal. Oleh kerana kaedah setLocation mempertimbangkan dimensi mentah tetingkap tanpa mengira ketebalan sempadan, ia salah meletakkan tetingkap, membawa kepada isu bertindih.

Untuk mencapai gelagat yang diingini bagi dua bingkai yang tidak boleh diubah saiz diletakkan bersebelahan tanpa bertindih sempadan, anda boleh:

  • Gunakan JDialogs Sebaliknya: JDialogs biasanya memaparkan jidar yang lebih nipis daripada JFrames. Dalam kod contoh, menggantikan frame2 dengan JDialog menyelesaikan isu sempadan bertindih.
  • Lumpuhkan Aero: Jika menggunakan JDialogs tidak boleh dilaksanakan, anda boleh melumpuhkan kesan Aero dengan menetapkan sifat sistem "sun .java2d.noddraw" kepada "true". Ini boleh meningkatkan ketepatan kedudukan sempadan.
  • Laraskan Sempadan Secara Manual: Tentukan ketebalan sempadan yang sesuai berdasarkan platform anda dan laraskan sempadan tetingkap secara manual untuk mengimbanginya. Ini memerlukan pengukuran dan ujian yang teliti untuk memastikan penentududukan yang betul pada sistem yang berbeza.
  • Pertimbangkan Tetingkap Asli: Rangka kerja tetingkap asli, seperti AWT atau Swing, mungkin memberikan kawalan yang lebih tepat ke atas sempadan tetingkap dan kedudukan daripada API standard Java.

Atas ialah kandungan terperinci Mengapa JFrames Tidak Boleh Saiz Bertindih Apabila Menggunakan Windows Aero?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Mar 17, 2025 pm 05:35 PM

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap

Iceberg: Masa Depan Jadual Data Tasik Iceberg: Masa Depan Jadual Data Tasik Mar 07, 2025 pm 06:31 PM

Iceberg: Masa Depan Jadual Data Tasik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Mar 17, 2025 pm 05:43 PM

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Mar 07, 2025 pm 06:12 PM

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Mar 17, 2025 pm 05:44 PM

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Mar 17, 2025 pm 05:46 PM

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?

See all articles