相关疑难解决方法(0)

全屏Java中的JFrame

我很快就会做一个项目,我将不得不使用全屏模式.

它将在窗口中绘制一些图形.如果我使用JFrame或类似的东西,它会很方便.

我不知道屏幕的最终分辨率是多少.请告诉我图片是否会自动重新缩放?

JFrame jf = new JFrame();
jf.setSize(1650,1080);
//make it fullscreen;
//now is everything is going to be rescaled so it looks like the original?
Run Code Online (Sandbox Code Playgroud)

java fullscreen

97
推荐指数
7
解决办法
24万
查看次数

FullScreen Swing Components Fail to Receive Keyboard Input on Java 7 on Mac OS X Mountain Lion

Update 12/21:

7u10 was recently released. Confirmed that:

  1. The issue still persists
  2. Thankfully, the workaround still functions!

Update 11/7:

And we have a workaround!

Leonid Romanov from Oracle on the openjdk.java.net mailing list provided some insight as to what's going on:

Well, although I'm not 100% sure yet, but it looks like when we enter full screen some other window becomes the first responder, hence the beep. Could you please try the following workaround: after calling setFullScreenWindow() on a …

java macos swing fullscreen keyboard-events

24
推荐指数
1
解决办法
5524
查看次数

在OSX上摇摆:如何捕获命令-Q?

确信("受过教育")Mac上的Swing应用程序确实看起来很原生之后,我试图让我的外观尽可能本地化.一切看起来都很棒,但当我点击command+ Q或从菜单中执行此操作时,windowStateChanged(WindowEvent e)我的主要JFrame没有触发(如果我以任何其他方式退出,它会触发).我如何回应真正的Apple退出?

java macos swing

23
推荐指数
2
解决办法
7997
查看次数

如何让JFrame真正全屏?

在我的Java应用程序中,我尝试使用以下代码使JFrame真正全屏:

public class MainFrame extends JFrame {

    private static final long serialVersionUID = 1L;

    public MainFrame() {
        super();
        this.setTitle();
        this.setUndecorated(true);

        this.setExtendedState(JFrame.MAXIMIZED_BOTH);

        this.setVisible(true);
        //this.pack();
    }
}
Run Code Online (Sandbox Code Playgroud)

但在我的Mac上,我仍然可以看到Dock和OSX的顶部工具栏.那么如何创建一个真正消耗整个屏幕的JFrame呢?

编辑 我必须补充一点,我想从eclipse插件中调用那个JFrame.

java swing fullscreen jframe

20
推荐指数
2
解决办法
5万
查看次数

全屏模式不是全屏模式

可能重复:
Java全屏模式无法在Ubuntu上运行

我尝试做100%全屏模式,我使用Ubuntu 12.10,左边是侧栏,顶部是菜单.当我运行全屏模式时,它不会掩盖这两个菜单栏,它就在它们旁边:

屏幕截图

它应该覆盖左侧菜单栏和顶部黑条.为什么不呢?

package sscce;

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;

public class Main extends JFrame{

    public Main(){
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice myDevice = ge.getDefaultScreenDevice();
        this.setUndecorated(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myDevice.setFullScreenWindow(this);
    }

    public static void main(String[] args){
        Main main = new Main();
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing

18
推荐指数
0
解决办法
170
查看次数

如何在推送JButton时关闭GUI

有谁知道如何使jbutton关闭gui?我认为这样System.CLOSE(0);但是没有用.它也可能exitActionPerformed(evt);,但这也不起作用.只需要代码行就可以了.

编辑:别介意的人.答案是System.exit(0);.谢谢你的帮助!

java user-interface swing jbutton

15
推荐指数
3
解决办法
16万
查看次数

如何在Java中的按钮中设置单键助记符?

我正在研究一个项目,我想在按钮上设置助记符.但问题是助记符在配对关键示例(Alt+ F)等方面起作用.但我希望它在单键上.

java swing key-bindings jbutton

10
推荐指数
1
解决办法
7640
查看次数

Java透明度渲染错误

我目前正在开发一个自助服务终端风格的Java程序来显示天气,时间,预测等.这是一个程序应该是什么样子的镜头(在更新时间之前拍摄的截图)

图像显示图形错误之前所需的输出

各个部分创建为JPanels,并paintComponent()重写了方法.它们绘制渐变标题和半透明背景.但是,当我更改其中一个面板的内容时,之前的内容会被遗忘,而不是被删除.一个例子如下所示:

如你所见,当时间从11:51变为11:52时,数字重叠,背景变得更亮(因为半透明背景被重新绘制)

图形错误

显示图形错误的图像

我该怎么做才能防止这种重叠?最终,当单个面板更新其内容时,我宁愿不必重绘整个屏幕.我宁愿只重绘那个特定的部分.重新绘制背景,然后是其中的所有组件将很容易.

更新

几个答案涉及清除要绘制的区域.我是否使用g.clear()AlphaComposite.CLEAR删除背景图像.这可以在下图中看到.也许如果我可以在清除区域之前复制背景,我可以重新绘制背景的那一部分,然后适当地分层其他图像.思考?

在此输入图像描述

更新2

提交了一个答案,其中显示了在透明面板和背景上放置的计时器的完整工作示例.这非常有用,但是,我不是手动绘制我的子组件.时间,天气图标和温度都是JLabel布局在半透明面板上.我宁愿不必手动绘制单个组件.

java swing transparency repaint paintcomponent

8
推荐指数
1
解决办法
3305
查看次数

Keylistener不为JPanel工作

我正在尝试使用我的JPanel类中的KeyListener按下其中一个箭头键时执行某些操作.这是我的代码:

public class TestPanel extends JPanel implements KeyListener{

    public TestPanel(){
        this.addKeyListener(this);
        this.setFocusable(true);
        this.requestFocusInWindow();
    }

    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            System.out.println("Right");

        }

        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            System.out.println("Left");
        }

    }

    public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
}
Run Code Online (Sandbox Code Playgroud)

我的main方法将一个新面板实例添加到一个框架并显示它.我需要将keylistener添加到JFrame吗?在我的情况下,这将是困难和低效的,所以如果可能的话,我想让它与这个JPanel一起工作.谁知道我做错了什么?

编辑:键绑定代码不起作用:

public class GamePanel extends JPanel implements ActionListener{

//Constructor
public GamePanel(){

    setupKeyBinding();
    this.setFocusable(true);
    this.requestFocusInWindow();


}

private void setupKeyBinding() {
    int condition = JComponent.WHEN_IN_FOCUSED_WINDOW;
    InputMap inMap = getInputMap(condition);
    ActionMap actMap = getActionMap();

    inMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0), "Left"); …
Run Code Online (Sandbox Code Playgroud)

java swing keylistener

8
推荐指数
2
解决办法
3万
查看次数

Java全屏模式无法在Ubuntu上运行

所以我正在使用Ubuntu,当我想在Java中进入全屏模式时,会出现一个普通窗口,其中包含最大屏幕尺寸,而不是没有标题栏等的全屏窗口.我承认,我甚至不确定全屏模式应该是什么看起来像Java,因为我没有在任何其他操作系统上尝试过.但我认为它应该是没有标题栏的屏幕.有这个问题的其他人吗?

这是我使用的代码.; 很直接.

public static void main(String[] args) {
    GraphicsEnvironment env = GraphicsEnvironment
            .getLocalGraphicsEnvironment();
    GraphicsDevice vc = env.getDefaultScreenDevice();
    JFrame window = new JFrame();
    window.setUndecorated(false);
    window.setResizable(false);
    vc.setFullScreenWindow(window);
}
Run Code Online (Sandbox Code Playgroud)

java ubuntu swing fullscreen jframe

7
推荐指数
2
解决办法
4371
查看次数