当前位置: 首页 > 面试题库 >

是否可以使用keylistener显示先前隐藏的JFrame

越心水
2023-03-14
问题内容

这是我的代码,我基本上只是为最常见的侦听器做了一个测试器,以后我可能会在以后的项目中使用它,主要的问题是在底部的键侦听器中,我试图重新显示框架,但我认为只是无法做到这一点,请帮助ps:不知道为什么进口不正确。

package newpackage;

import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JSeparator;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class NewClass1 extends JFrame {


private JLabel item1,infomouse,infoclicks,infoKeys,writehere;
private JButton button1,button2,button3;
private JTextArea text1,status,KeyStatus;
private JTextField text2,text3,mouse,clicks,test;
private JSeparator sep1;
private int clicknumber;

public NewClass1() {
    super("Listener Tests");
    setLayout(null);
    sep1 = new JSeparator();

    button1 = new JButton("Button1");
    button2 = new JButton("Button2");
    button3 = new JButton("Button3");
    item1 = new JLabel("Button Status :");
    infomouse = new JLabel("Mouse Status :");
    infoclicks = new JLabel("Nº of clicks :");
    infoKeys = new JLabel("Keyboard status:");
    writehere = new JLabel("Write here: ");


    text1 = new JTextArea();
    text2 = new JTextField(20);
    text3 = new JTextField(20);
    status = new JTextArea();
    mouse  = new JTextField(20);
    clicks = new JTextField(4);
    KeyStatus = new JTextArea();
    test = new JTextField(3);
    clicks.setText(String.valueOf(clicknumber));

    text1.setEditable(true);
    text2.setEditable(false);
    text3.setEditable(false);
    status.setEditable(false);
    mouse.setEditable(false);
    clicks.setEditable(false);
    KeyStatus.setEditable(false);

    text1.setBounds(135, 310, 150, 20);
    text2.setBounds(135, 330, 150, 20);
    text3.setBounds(135, 350, 150, 20);
    status.setBounds(15, 20, 240, 20);
    infomouse.setBounds(5,45,120,20);
    infoKeys.setBounds(5,90,120,20);
    KeyStatus.setBounds(15,115,240,85);
    test.setBounds(15,225,240,20);
    mouse.setBounds(15,70,100,20);
    infoclicks.setBounds(195, 45, 140, 20);
    clicks.setBounds(195, 70, 60, 20);

    item1.setBounds(5, 0, 120, 20);
    button1.setBounds(10, 310, 115, 20);
    button2.setBounds(10, 330, 115, 20);
    button3.setBounds(10, 350, 115, 20);
    sep1.setBounds(5, 305, 285, 10);

    sep1.setBackground(Color.BLACK);
    status.setBackground(Color.LIGHT_GRAY);

    button1.addActionListener(new button1list());
    button2.addActionListener(new button1list());
    button3.addActionListener(new button1list());

    button1.addMouseListener(new MouseList());
    button2.addMouseListener(new MouseList());
    button3.addMouseListener(new MouseList());
    getContentPane().addMouseListener(new MouseList());
    test.addKeyListener(new KeyList());
    this.addKeyListener(new KeyList());
    test.requestFocus();

    add(item1);
    add(button1);
    add(button2);
    add(button3);
    add(text1);
    add(text2);
    add(text3);
    add(status);
    add(infomouse);
    add(mouse);
    add(infoclicks);
    add(clicks);
    add(infoKeys);
    add(KeyStatus);
    add(test);
    add(sep1);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    try{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }catch (Exception e){System.out.println("Error");}
    SwingUtilities.updateComponentTreeUI(this);
    setSize(300, 400);
    setResizable(false);
    setVisible(true);
    test.setFocusable(true);
    test.setFocusTraversalKeysEnabled(false);
    setLocationRelativeTo(null);
}

public class button1list implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        String buttonpressed = e.getActionCommand();
        if (buttonpressed.equals("Button1")) {
            text1.setText("just");
        } else if (buttonpressed.equals("Button2")) {
            text2.setText(text2.getText()+"testing ");
        } else if (buttonpressed.equals("Button3")) {
            text3.setText("this");
        } 
    }
}
    public class MouseList implements MouseListener{
        public void mouseEntered(MouseEvent e){
        if(e.getSource()==button1){
                status.setText("button 1 hovered");
            }
        else if(e.getSource()==button2){
                status.setText("button 2 hovered");
            }
        else if(e.getSource()==button3){
                status.setText("button 3 hovered");
            }
        }
        public void mouseExited(MouseEvent e){
                status.setText("");
        }
        public void mouseReleased(MouseEvent e){
            if(!status.getText().equals("")){
                status.replaceRange("", 0, 22);
            }
        }
        public void mousePressed(MouseEvent e){
            if(e.getSource()==button1){
                status.setText("button 1 being pressed");
            }
        else if(e.getSource()==button2){
                status.setText("button 2 being pressed");
            }
        else if(e.getSource()==button3){
                status.setText("button 3 being pressed");

            }
        }
        public void mouseClicked(MouseEvent e){
            clicknumber++;
            mouse.setText("mouse working");
            clicks.setText(String.valueOf(clicknumber));
      }
 }
    public class KeyList implements KeyListener{
        public void keyReleased(KeyEvent e){}
        public void keyPressed(KeyEvent e){
            KeyStatus.setText("");
            test.setText("");
            String full = e.paramString();
            String [] temp = null;
            temp = full.split(",");
            for(int i=0; i<7 ;i++){
            KeyStatus.append(temp[i] + "\n");
            }
            if(e.getKeyChar()=='h'){setVisible(false);
                test.requestFocus();
            }
            if(e.getKeyChar()=='s'){setVisible(true);}
        }
        public void keyTyped(KeyEvent e){}
    }

}


问题答案:

可见组件可以具有键盘焦点,并且可以接收键盘和其他输入事件,但是不可见组件不能具有焦点,也不能接收输入事件。使框架不可见时,它停止接收输入事件,包括所有test要添加的组件在内的所有子项也一样KeyListener

要使此工作有效,您将必须具有可见的组件,并将键盘事件从该组件转发到不可见的框架。或者更好的是,invisibelFrame.setVisible(true)从您已经可见的组件中调用。

另外,您也许可以找到其他方式来触发显示框架。例如,带有上下文菜单的系统托盘组件是用于隐藏和显示应用程序框架的常见模式(对于某些用户,在此过程中会引起很多麻烦!)

看到

  • Sun教程,如何使用系统托盘


 类似资料:
  • 问题内容: 对于我正在做的网站,我想加载一个div,然后隐藏另一个,然后有两个按钮可以使用JavaScript在div之间切换视图。 这是我当前的代码 替换div2的第二个功能不起作用,但第一个功能起作用。 问题答案: 如何显示或隐藏元素: 为了显示或隐藏元素,请操纵元素的style属性。在大多数情况下,您可能只想更改元素的属性: 或者,如果您仍然希望元素占用空间(例如,如果您要隐藏表格单元格),

  • 我尝试了下面的代码在移动和桌面上以不同的方式显示。但是两个句子同时显示。

  • 对于我正在做的一个网站,我想加载一个div并隐藏另一个,然后有两个按钮可以使用JavaScript在div之间切换视图。 这是我当前的代码 null null 取代div2的第二个函数不起作用,但第一个是。

  • 问题内容: 是否可以取消使用隐藏iframe的文件上传? 我尝试将iframe的源设置为空字符串,但上传并未中断。 问题答案: iframe是承载表单过帐的传输渠道,因此Atanas是正确的,您必须停止iframe内部的传输。 这是一种取决于浏览器的方法:

  • 问题内容: 我想根据变量是否为null显示/隐藏div。 注意:在我的情况下,变量是一个对象。 这是一个非常简单的问题,但我似乎无法使其正常工作。 谢谢。 问题答案: 需要澄清的是,上面的示例确实有效,示例中的代码由于不相关的原因而无法正常工作。 如果myvar为false,null或之前从未使用过(即从未调用过$ scope.myvar或$ rootScope.myvar),则div将不会显示。

  • 在我的Swing应用程序中,我有2个JFrameA和B。当我单击JFrameA上的按钮时,它会打开JFrameB并隐藏它自己(我设法完成了这部分) 在JFrame B上,我在JTabbedPane上放置了4个JPanels。每个JPanel有2个JButtons。 我该怎么做? //JPanel类 公共类AddItemPanel扩展javax.swing.jPanel{