相关疑难解决方法(0)

全屏窗口不会使用KeyListener或KeyBoardFocusManager获取键盘输入

我在使用KeyBoardFocusManger全屏工作时遇到了问题Window.无论如何,它都不会得到键盘输入.我使用a System.exit(0)和a println()来查找对keypressed/release/typed方法的任何调用,但不会抛出任何错误.我试过了KeyListeners; 但我看了以后这个,我改变了一个KeyboardFocusManager,同样的事情仍然发生.我真的很绝望; 从我可以判断,Window是不是得到了键盘的焦点?

这是我的主要内容:

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            // Determine if full-screen mode is supported directly
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            GraphicsDevice gs = ge.getDefaultScreenDevice();
            if (gs.isFullScreenSupported()) {
                Frame frame = new Frame(gs.getDefaultConfiguration());
                SpaceInvaderUI spaceInvaderUI = new SpaceInvaderUI(frame);
                // Enter full-screen mode
                gs.setFullScreenWindow(spaceInvaderUI);
            } else {
                JOptionPane.showMessageDialog(null, "Does not support full screen!", "Error 0x01", JOptionPane.ERROR_MESSAGE); …
Run Code Online (Sandbox Code Playgroud)

java swing fullscreen keylistener key-bindings

7
推荐指数
1
解决办法
2270
查看次数

如何使"输入"键表现为像JFrame上的提交

我正在构建一个客户端/服务器应用程序.我希望在身份验证框架上让用户更轻松.

我想知道如何让enter-key将登录名和密码提交给数据库(触发动作)?

java swing client-server key-bindings jframe

4
推荐指数
1
解决办法
1万
查看次数

以全屏模式调整框架的组件大小

无论屏幕尺寸如何,我都希望我的框架组件始终在屏幕上进行调整.我在我的笔记本电脑(小屏幕)中绘制框架,当我在具有大屏幕的另一台机器(jar文件)中运行我的应用程序时,框架组件不会重新调整尺寸!

当我在任何机器中以全屏模式放置框架时,如何使框架调整其组件大小?

目前的布局

MSM GUI

package package_MSM;

import java.awt.Color;

public class MSMGui extends JFrame 
{
    private static final long serialVersionUID = 1L;
    private JPanel contentPane;
    private JTextArea textArea;
    private JPanel pnlLogo1;
    private JLabel lblLogo1;;
    private static JButton btnSmpd1;
    private static JButton btnSmpd2;
    private static JButton btnSmpd3;
    private static JButton btnSmpd4;
    private static JButton btnSmpd5;
    private static JButton btnSmpd6;
    private static JButton btnSmpd7;

    /**
     * Launch the application.
     */

    public static void main(String[] args) 
    {
        EventQueue.invokeLater(new Runnable() 
        {
            public void run() 
            { …
Run Code Online (Sandbox Code Playgroud)

java swing fullscreen layout-manager

4
推荐指数
1
解决办法
1万
查看次数

使用空格键触发JButton,或输入键或鼠标单击

我正在尝试使用单个按钮获取一个简单的JFrame,以便在发生任何这些事件时触发事件:

  • 按下Enter键并且JButton具有焦点
  • 按下空格键并且JButton具有焦点
  • 单击JButton.

似乎Enter和空格键是"免费",以及使用JButton上的addActionListener默认鼠标点击; 问题是,我已经读过,键绑定依赖于所使用的外观.

我试图通过将Enter和空格键添加到JButton的动作映射来在LaF中获得通用行为,甚至添加了一个随机键("m")以确保ActionMap正在进行工作(它是),但现在是鼠标点击丢失.我似乎能够获得所有键和鼠标单击的唯一方法是使用动作映射和addActionListener.

有没有办法让这些键和鼠标绑定在所有LaF中一致地工作,而不试图检测可能出现的每个可能的LaF?我可以注册一个动作侦听器,它将触发键和鼠标事件吗?

我最喜欢的解决方案是在JButton动作图中添加鼠标点击,并检测动作内部发生的键或鼠标点击.

我还在这里学习绳索,所以这可能不是最好或最有效的做事方式; 我确定它过度设计了.这是一种训练练习,我正在试验我能掌握的一切.欢迎任何和所有编码风格的评论!

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.UIManager;

public class Example extends JFrame {

// ============================
private class BtnListener extends AbstractAction {
    private static final long serialVersionUID = 1L;

    public void actionPerformed(ActionEvent ae) {
        System.out.println("\nclick button listener triggered");
        System.out.println(ae.getSource().getClass().toString());
    }
} // class BtnListener

private static final int NO_MODIFIER = 0;
private static …
Run Code Online (Sandbox Code Playgroud)

java swing key-events jbutton

3
推荐指数
1
解决办法
8308
查看次数

来自JFrame的JDialog,我的听众为什么不工作?

大约一周前,我开始研究选项类型的GUI.我从一个JFrame开始,并添加了相当多的功能与各种按钮和键监听器.我有这一切工作,并决定我希望窗口是模态的.我将JFrame转换为JDialog,虽然它仍然是非模态的,但所有功能仍然存在但是当我将其设置为模态(true或false)时,我失去了所有听众的功能.什么是错的?

我正在努力将我的SVN上传到GitHub.如果你需要查看代码只是评论这样说并给我几分钟.提前致谢.

package main;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import javax.swing.*;
import Twitter.SearchTweets;

public class OptionsGUI {

// auto generated
private static final long serialVersionUID = 1L;

private JDialog f;
private JPanel buttonPanel;
private JPanel optionsLabelPanel;
private JPanel optionsSetPanel;

private JLabel sortLocationLabel;
private JLabel timeoutLabel;
private JLabel maxTweetsLabel;
private JLabel keywordsLabel;   
private JLabel currentKeywordsLabel;

private JButton add;
private JButton remove;
private JButton save;
private JButton cancel; 

private …
Run Code Online (Sandbox Code Playgroud)

java twitter swing keylistener jdialog

3
推荐指数
1
解决办法
1008
查看次数

将JLabel置于JPanels中心

我正在制作一个得分保持计划,但我遇到了一个问题.我试图做的是在顶部有一个包含两个JPanel的JPanel,而JPanel又包含两个团队名称.我很困惑为什么程序顶部的两个JLabel没有集中在它们所包含的JPanels中.

在此输入图像描述

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class ScoreFrame extends JFrame {

    private static final Dimension SCREEN_SIZE = Toolkit.getDefaultToolkit().getScreenSize();
    private static final int WIDTH = SCREEN_SIZE.width;
    private static final int HEIGHT = SCREEN_SIZE.height;
    private final JTextField[] nameField = new JTextField[] { new JTextField(), new JTextField() };
    private final JLabel[] nameLabel = new JLabel[] { new JLabel("Team 1"), new JLabel("Team 2") };
    private final GridBagLayout gridBag = new GridBagLayout();
    private final GridBagConstraints constraints = new GridBagConstraints();
    private final JPanel topPanel …
Run Code Online (Sandbox Code Playgroud)

java layout swing layout-manager gridbaglayout

3
推荐指数
1
解决办法
476
查看次数

SwingUtilities.invokeLater:问题

我永远不明白SwingUtilities.invokeLater,这就是我一直避免它的原因.但是让Swing Thread安全是非常重要的.好吧请原谅,因为这是我第一次这样做.我试图在一些数据库查询后关闭窗口.所以,据我所知,任何更新UI必须由.处理.这SwingUtilities.invokeLater是我的工作:

主要:

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    new forminsert().setVisible(true);
forminsert f=new forminsert();
    }
    });

    }
  public forminsert() {
    initComponents();
}

public class forminsert extends javax.swing.JFrame {    
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jTextField1 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setUndecorated(true);

    jPanel1.setBackground(new java.awt.Color(0, 0, 0));
    jPanel1.setBorder(javax.swing.BorderFactory.createMatteBorder(3, 3, 3, 3, new java.awt.Color(0, 204, 204)));
              /////***REST …
Run Code Online (Sandbox Code Playgroud)

java swing invokelater swingutilities

2
推荐指数
1
解决办法
1590
查看次数

如何关闭X按钮的可见性并禁用alt + F4功能

有人能告诉我如何将主应用程序窗口中的X按钮设置为false,以及如何设置Alt + F4功能不可用或只是禁用它?


更新

我添加了:

public ZalumView(SingleFrameApplication app) { 
    super(app); 
    initComponents(); 
    mainFrame = this.getFrame(); 
    mainFrame.setTitle("Zalum - zarzadzanie zasobami ludzkimi"); 
    mainFrame.pack(); 
    mainFrame.setResizable(false); 
    mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

java swing

1
推荐指数
2
解决办法
1799
查看次数

BUG:Java Swing键绑定在OSX中使用awt setFullScreenWindow在JDK 7中丢失函数

编辑2013年1月16日:原始问题已被删除.这似乎是mac OSX上JDK 7的一个错误.我已经向Sun(Oracle)提交了一份错误报告.

下面的文件使用awt类GraphicsEnvironment和方法setFullScreenWindow将图像显示为全屏.没有包含图像,因此运行代码时屏幕将显示为灰色.但是,密钥绑定仍然有效.

有两个键绑定.按"ENTER"键应打印"按下Enter键".到stdout.按"ESCAPE"应该将"ESC Key终止的程序"打印到stdout并退出程序.

使用Windows 7 64和JDK Java SE 6和7,这些键绑定按预期工作.

使用Mac OSX 10.7 Lion和JDK Java SE 6,这些键绑定按预期工作.

使用Mac OSX 10.7 Lion和JDK Java SE 7,这些键绑定将停止工作.

回滚到JDK Java SE 6会使它们重新开始工作.

我不知道它是否会影响其他操作系统.

我已经尝试了所有版本的JComponent.WHEN_IN_FOCUS等......并且这些选项都没有解决问题.

下面是SSCCE,只有在使用Mac OSX 10.7和JDK Java SE 7时才会重现错误.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FullScreen extends JFrame
{
    /*
     * screenImage is never set in this code. It can be set to any image
     * the error will still be present. Images have been …
Run Code Online (Sandbox Code Playgroud)

java macos awt key-bindings

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

Mac OSX中真正的全屏JFrame/Swing应用程序

我正在开发应用程序,我正在使用Swing制作GUI.我希望我的应用程序是全屏的.我可以很容易地设置窗口的大小,但是我无法使应用程序真正全屏(IE与Apple菜单栏和底座隐藏).我在网上找到的所有答案似乎都不适合我.我是Java的新手,所以感谢任何帮助.

frame = new JFrame("Test");
    frame.setTitle("Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel emptyLabel = new JLabel("");
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
    frame.setSize((int)dimension.getWidth(), (int)dimension.getHeight());
    int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2); // X center
    int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);  //Y center
    frame.setLocation(x, y); //Set Frame Location
    frame.setResizable(false); //Frame is not resizable
    frame.setUndecorated(true);  //No decoration for the frame
    frame.setAlwaysOnTop(true);
    frame.setVisible(true); //Make visible
Run Code Online (Sandbox Code Playgroud)

java macos swing fullscreen jframe

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