サイズ変更不可のウィンドウの境界線と位置
Windows Aero を有効にしてサイズ変更不可の JFrame を作成する場合、setLocation メソッドはウィンドウの境界線が正しく表示されるため、境界線が重なり合います。これは、2 つのフレームを並べて配置するときに発生します。
この問題を解決するには、サイズ変更できないコンテナの境界設定の制限と注意点を理解することが重要です。サイズ変更不可のコンテナの境界を調整するときは、プラットフォーム固有のフォントの違いに関係なく、テキストが表示されたままであることを確認することが重要です。
これらの課題を説明するために、次の例を考えてみましょう。
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(); } }); } }
この例では、宝くじ番号の文字列を表示する JLabel を使用して、サイズ変更不可の JPanel が作成されます。 JFrame のサイズは、テキストの幅と高さに基づいて設定されます。フレームが表示されると、その幅は文字列の幅に合わせて縮小されます。ただし、ユーザーのプラットフォームの FontMetrics が大きいフォントを使用している場合、ラベルのテキストが切り詰められ、宝くじの番号が不完全になる可能性があります。
そのため、サイズ変更できないコンテナの境界を変更する場合は注意することをお勧めします。必要に応じて、コンポーネント要素の相対的な配置とサイズ変更を組み合わせて、可視性と必要な機能を維持することを検討してください。
以上がWindows Aero を有効にしてサイズ変更不可の JFrame を正しく配置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。