首頁  >  文章  >  如何設定 JPanel 在螢幕上任意位置的位置

如何設定 JPanel 在螢幕上任意位置的位置

WBOY
WBOY轉載
2024-02-09 10:40:09663瀏覽

php小編草莓為您介紹如何設定JPanel在螢幕上任何位置的方法。 JPanel是Java Swing中常用的容器元件,透過設定佈局管理器和設定元件的位置可以實現對JPanel的定位。首先,我們需要選擇合適的佈局管理器,例如FlowLayout、BorderLayout等。然後,透過設定組件的邊界和位置屬性,可以將JPanel放置在螢幕的任意位置。這樣,就可以輕鬆實現JPanel的自由定位,提供更靈活的介面設計和互動體驗。

問題內容

我需要有許多 JPanel,但我無法將它們放置在我想要的位置,因為當我嘗試更改邊界等內容時,它們要么會消失。感謝任何幫助

這是我嘗試定位的面板的程式碼。我希望它位於螢幕右側大約 3/4 的位置,但我無法將其移出右上角

textField = new JTextField("Sample Text");
textField.setPreferredSize(new Dimension(200, 30));
textField.setFont(new Font("Arial", Font.PLAIN, 16));
textField.setEditable(false); // Set to false to make it read-only

JPanel textPanel = new JPanel(new GridBagLayout());
textPanel.add(textField);
add(textPanel, BorderLayout.NORTH);

解決方法

面板(以及所有 Swing)始終需要頂級元件(如 JFrame、JDialog 或 JWindow)才能在螢幕上呈現。即使您將面板絕對定位在頂級容器內(佈局管理器的工作就是糾正該錯誤) - 您需要更改的是頂級容器的位置。

這裡是一個建立不在左上角的視窗的範例:

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
    
    public static void main(String[] args) {
        JFrame f = new JFrame("Positioning Test Frame");
        f.add(new JLabel("Window Content Area"));
        f.pack(); // make the Window as small as possible
        //f.setLocationRelativeTo(null); // this line will center the window
        f.setLocation(200, 200); // this line will go to absolute coordinates
        f.setVisible(true);
    }
}

您可能需要根據螢幕尺寸計算視窗位置(在右側約 3/4 處)。下面的程式碼將提供桌面大小(可能由多個螢幕組成)。如果您只對其中一個螢幕感興趣,您可能會看到從哪裡獲得該值。

public static Rectangle2D getDesktopSize() {
    Rectangle2D result = new Rectangle2D.Double();
    GraphicsEnvironment localGE = GraphicsEnvironment.getLocalGraphicsEnvironment();
    for (GraphicsDevice gd : localGE.getScreenDevices()) {
      for (GraphicsConfiguration graphicsConfiguration : gd.getConfigurations()) {
        result.union(result, graphicsConfiguration.getBounds(), result);
      }
    }
    return result;
}

以上是如何設定 JPanel 在螢幕上任意位置的位置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除