Rumah > Java > javaTutorial > Bagaimana untuk Meletakkan JFrames Tidak Boleh Ubah Saiz dengan Betul dengan Windows Aero Enabled?

Bagaimana untuk Meletakkan JFrames Tidak Boleh Ubah Saiz dengan Betul dengan Windows Aero Enabled?

Linda Hamilton
Lepaskan: 2024-12-09 08:25:07
asal
893 orang telah melayarinya

How to Correctly Position Non-Resizable JFrames with Windows Aero Enabled?

Sempadan dan Kedudukan Tetingkap Tidak Boleh Ubah Saiz

Apabila mencipta JFrames tidak boleh ubah saiz dengan Windows Aero didayakan, kaedah setLocation tidak menyesuaikan untuk sempadan tingkap dengan betul, mengakibatkan sempadan bertindih. Ini boleh diperhatikan apabila meletakkan dua bingkai bersebelahan.

Untuk menyelesaikan isu ini, adalah penting untuk memahami pengehadan dan kaveat menetapkan had bagi bekas yang tidak boleh diubah saiz. Apabila melaraskan had untuk bekas yang tidak boleh diubah saiz, adalah penting untuk memastikan bahawa sebarang teks kekal kelihatan tanpa mengira perbezaan fon khusus platform.

Untuk menggambarkan cabaran ini, pertimbangkan contoh berikut:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Evil extends JPanel {

    private static final String s =
        "Tomorrow's winning lottery numbers: 42, ";
    private JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT);

    public Evil() {
        this.add(label);
    }

    private void display() {
        JFrame f = new JFrame("Evil");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this, BorderLayout.WEST);
        f.pack();
        int w = SwingUtilities.computeStringWidth(
            label.getFontMetrics(label.getFont()), s);
        int h = f.getHeight();
        f.setSize(w, h);
        f.setResizable(false);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Evil().display();
            }
        });
    }
}
Salin selepas log masuk

Dalam contoh ini, JPanel yang tidak boleh diubah saiz dibuat dengan JLabel yang memaparkan rentetan nombor loteri. Saiz JFrame ditetapkan berdasarkan lebar dan ketinggian teks. Apabila bingkai ditunjukkan, lebarnya dikurangkan untuk menampung lebar rentetan. Walau bagaimanapun, jika platform pengguna mempunyai fon dengan FontMetrics yang lebih besar, teks label mungkin akan dipotong, menjadikan nombor loteri tidak lengkap.

Oleh itu, adalah disyorkan untuk berhati-hati apabila mengubah suai sempadan bekas yang tidak boleh diubah saiz. Jika perlu, pertimbangkan untuk menggunakan gabungan kedudukan relatif dan saiz semula elemen komponen untuk mengekalkan keterlihatan dan kefungsian yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Meletakkan JFrames Tidak Boleh Ubah Saiz dengan Betul dengan Windows Aero Enabled?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan