Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击JLabel以打开新帧_Java_Swing_Frame_Jlabel_Mouselistener - Fatal编程技术网

Java 单击JLabel以打开新帧

Java 单击JLabel以打开新帧,java,swing,frame,jlabel,mouselistener,Java,Swing,Frame,Jlabel,Mouselistener,我正在为我正在编程的游戏设计图形,我想知道当一个JLabel被点击时,是否有一种打开框架的简单方法 有简单的代码吗 实现MouseListener界面,并使用它mouseClicked方法处理JLabel上的点击 label.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { // you can open a new frame here as

我正在为我正在编程的游戏设计图形,我想知道当一个JLabel被点击时,是否有一种打开框架的简单方法

有简单的代码吗


实现
MouseListener
界面,并使用它
mouseClicked
方法处理JLabel上的点击

label.addMouseListener(new MouseAdapter()  
{  
    public void mouseClicked(MouseEvent e)  
    {  
       // you can open a new frame here as
       // i have assumed you have declared "frame" as instance variable
       frame = new JFrame("new frame");
       frame.setVisible(true);

    }  
}); 

你可以这样做:

label.addMouseListener(new MouseAdapter()   {   

        public void mouseClicked(MouseEvent e)   
        {   
              JPanel j = new JPanel();
              frame.setContentPane(j);
        }   
});

创建标签并在其中添加单击事件

大概是这样的:

JLabel click=new JLabel("Click me");

 click.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
           JFrame jf=new JFrame("new one");
        jf.setBackground(Color.BLACK);
        jf.setSize(new Dimension(200,70));
        jf.setVisible(true);
        jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    });
  • 不要创建一个新的、从不使用JFrames的堆,必须使用
    OutOfMemoryException
    进行计算,因为这个
    对象
    永远不会被GC'ed

  • 供多个视图使用

  • 请参见安德鲁·汤普森的回答


您可以使用
MouseListener
界面,在
mouseClicked(MouseEvent e)
中使用
e.getSource()==您的标签检查单击的来源,并在那里创建新的框架。它们实际上是没有背景和边框的按钮。标签不是为那个用例设计的,并且将更难适应游戏的未来需求。标签甚至没有焦点。如果您关心的话,它们的可访问性支持不适合您的用例。最后,作为旁注,我不会在图纸上绘制文本,特别是如果部分内容与文本颜色相同。我认为开发一个定制的外观和感觉会比在游戏的许多部分重复使用标签技巧更少痛苦…正如建议的,这里应该考虑卡片布局
1:- Implement your class containing the JLabel with MouseListener interface
2:- add MouseListener to your JLabel 
3:-Override mouseClicked Event in your class
4:- In mouseClicked Even't body add your code to open a new JFrame/Frame .