第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

嘗試考慮 Java 中的任務(wù)欄會(huì)導(dǎo)致窗口大小不準(zhǔn)確

嘗試考慮 Java 中的任務(wù)欄會(huì)導(dǎo)致窗口大小不準(zhǔn)確

Smart貓小萌 2023-03-17 10:35:22
當(dāng)我嘗試運(yùn)行這段代碼時(shí),它會(huì)導(dǎo)致 JFrame 出于某種原因稍微向右移動(dòng)大約 10 個(gè)像素,并且窗口的高度也超出了任務(wù)欄,而所需的效果是使其完成 AT任務(wù)欄。我試過將 jframe 設(shè)置為未裝飾,這解決了整個(gè)問題,一切都在它應(yīng)該在的地方結(jié)束。但是當(dāng)我將 undecorated 設(shè)置為 false 時(shí),它似乎取代并破壞了窗口的位置。import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.GraphicsEnvironment;import java.awt.Toolkit;import javax.swing.JComponent;import javax.swing.JFrame;public class Component extends JComponent{/** *  */private static final long serialVersionUID = 1L;public int width, height;public int tps;private Game game;public Component(){    Toolkit kit = this.getToolkit();    width = (int) kit.getScreenSize().getWidth();    height = (int) GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight();    setLayout(new BorderLayout());    setPreferredSize(new Dimension(width, height));    game = new Game(this);    add(game);    initWindow("Test", this);}public void initWindow(String title, JComponent component){    JFrame jf = new JFrame(title);    jf.setResizable(false);    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    jf.add(component);    jf.pack();    jf.setLocationRelativeTo(null);    jf.setVisible(true);}}
查看完整描述

1 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

問題是您setPreferredSize在 的構(gòu)造函數(shù)中調(diào)用Component,因此它的大小調(diào)整請(qǐng)求應(yīng)用于框架的內(nèi)容。當(dāng)JFrame創(chuàng)建裝飾時(shí),它會(huì)增加該維度。解決方案是將調(diào)用應(yīng)用于setPreferredSize,JFrame例如在initWindow:


public void initWindow(String title, JComponent component)

{

    JFrame jf = new JFrame(title);

    Toolkit kit = this.getToolkit();

    int width = (int) kit.getScreenSize().getWidth();

    int height = (int) GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight();

    jf.setPreferredSize(new Dimension(width, height));

    // ...

}

這是一個(gè)演示程序,至少在我的系統(tǒng)上,它重現(xiàn)了問題并演示了解決方案。取消注釋1并注釋掉2會(huì)重現(xiàn)該問題。反轉(zhuǎn)注釋掉的行即可解決。


public class FitToScreenDemo {


    public static void main(String[] args) {

        JFrame frame = new JFrame();

        JComponent component = new JComponent() {};

        frame.add(component);

//      component.setPreferredSize(getDimensionWithoutTaskBar()); // 1

        frame.setPreferredSize(getDimensionWithoutTaskBar());     // 2

        frame.pack();

        frame.setVisible(true);

    }


    private static Dimension getDimensionWithoutTaskBar() {

        return new Dimension((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(),

            (int) GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight());

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-03-17
  • 1 回答
  • 0 關(guān)注
  • 106 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)