尝试在Java中考虑任务栏会导致窗口大小不正确

时间:2019-07-09 19:12:46

标签: java jframe

当我尝试运行此代码时,由于某种原因,它会导致JFrame稍微向右偏移约10个像素,并且窗口的高度超出了任务栏,以达到所需的效果。在任务栏上完成。

我尝试将jframe设置为Undecorated,这解决了整个问题,所有问题最终都解决了。但是我将第二个未设置为false的东西似乎移位并破坏了窗口的位置。

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 个答案:

答案 0 :(得分:0)

问题是您正在import csv s = 'hello, my name is "Joe"' with open('out.csv', 'w', newline='', encoding='utf-8') as f_out: writer = csv.writer(f_out, quotechar="'") writer.writerow([s]) 的构造函数中调用'hello, my name is "Joe"' ,因此将大小调整请求应用于框架的 content setPreferredSize创建装饰时,它会添加到该尺寸。解决方案是将对Component的呼叫JFrame应用于setPreferredSize

JFrame

这是一个演示程序,至少在我的系统上,该程序会重现问题并演示解决方案。取消注释 1 并注释掉 2 即可重现该问题。逆转注释掉的行即可解决。

initWindow