如何仅在一个打印“您好”的窗格上创建JButton

问题描述

每次尝试执行此操作时,都会给我一个错误,即“无法将Change Listener转换为Action Listener”,即使我对类实现了ActionListener,它仍然给我另一个错误

是否有一种方法只能在“加密”窗格上创建一个JButton,按下该按钮时就会打印“ Hello”

这是我的代码:

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

public class SwingDemo extends JFrame    { 
   public static void main(String args[]) { 


  JFrame frame = new JFrame("Encryption/Decryption Software");
  JTabbedPane tabbedPane = new JTabbedPane();
  JPanel panel1,panel2;
  panel1 = new JPanel();
  panel2 = new JPanel();
  tabbedPane.setBackground(Color.blue); 
  tabbedPane.setForeground(Color.white);
  tabbedPane.addTab("Encryption",panel1);
  tabbedPane.addTab("Decryption ",panel2); 
  frame.add(tabbedPane);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setBounds(200,170,500,250);
  frame.setVisible(true);

  tabbedPane.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
      if(tabbedPane.getSelectedIndex() == 0){

        panel1.removeAll();

        panel1.setLayout(null);

        JLabel initial_text = new JLabel("Enter text to be encrypted:");
        JLabel final_text = new JLabel("Final text:");
        JLabel key = new JLabel("Key:");

        JTextField text_field = new JTextField(100);
        JTextField key_field = new JTextField(100);

        panel1.add(initial_text);
        panel1.add(final_text);
        panel1.add(key);
        panel1.add(text_field);
        panel1.add(key_field);

        initial_text.setBounds(10,20,300,50);
        final_text.setBounds(10,150,600,50);
        key.setBounds(10,58,50);
        text_field.setBounds(178,30,230,30);
        key_field.setBounds(38,72,36,25);




      }
    }
  });
 }
}

解决方法

要检测点击,您需要添加MouseListener而不添加ChangeListener

import java.awt.Color;
import javax.swing.*; 
import java.awt.*; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener;  
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class SwingDemo extends JFrame    { 
   public static void main(String args[]) { 

JFrame frame = new JFrame("Encryption/Decryption Software");

    JFrame frame = new JFrame("Encryption/Decryption Software");

    JTabbedPane tabbedPane = new JTabbedPane();
    JPanel panel1,panel2;
    panel1 = new JPanel();
    panel2 = new JPanel();
    tabbedPane.setBackground(Color.blue);
    tabbedPane.setForeground(Color.white);
    tabbedPane.addTab("Encryption",panel1);
    tabbedPane.addTab("Decryption ",panel2);
    frame.add(tabbedPane);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(200,170,500,250);
    frame.setVisible(true);

    tabbedPane.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent e) {
            System.out.println("Hello");
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }
    });
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...