Java 当我将鼠标悬停在上面时,JText区域相互重叠

Java 当我将鼠标悬停在上面时,JText区域相互重叠,java,swing,Java,Swing,我创建了一个Java类,将鼠标悬停在各个文本区域上,它们会更改背景颜色,使其看起来像是高亮显示的。我还使JTextAreas不不透明,以便它们与当前空白背景具有相同的颜色。问题是文本相互重叠。提前感谢:) 下面是创建文本组件的代码 import java.awt.BorderLayout; import java.awt.Color; import javax.swing.*; public class DisplayComponents { public static void main

我创建了一个Java类,将鼠标悬停在各个文本区域上,它们会更改背景颜色,使其看起来像是高亮显示的。我还使JTextAreas不不透明,以便它们与当前空白背景具有相同的颜色。问题是文本相互重叠。提前感谢:)

下面是创建文本组件的代码

import java.awt.BorderLayout;
import java.awt.Color;

 import javax.swing.*;

public class DisplayComponents {
public static void main (String [] args)
{
    //Create JFrame
    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setVisible(true);

    //First panel
    JPanel panel = new JPanel();
    panel.setBackground(new Color(0, 0, 0, 50));
    panel.setOpaque(false);
    panel.addMouseListener(new HighlightJPanels());
    frame.add(panel, BorderLayout.NORTH);
    
    //Text area for first panel
    JTextArea textArea = new JTextArea();
    textArea.setText("This is the first panel i want to highlight");
    textArea.setOpaque(false);
    panel.add(textArea);
    
    //Second panel
    JPanel panelTwo = new JPanel();
    panelTwo.setBackground(new Color(0, 0, 0, 50));
    panelTwo.setOpaque(false);
    panelTwo.addMouseListener(new HighlightJPanels());
    frame.add(panelTwo, BorderLayout.SOUTH);
    
    //Text area for second panel
    JTextArea textAreaTwo = new JTextArea();
    textAreaTwo.setText("This is the second panel.");
    panelTwo.add(textAreaTwo);
    textAreaTwo.setOpaque(false);
    
    frame.pack();
}
}
下面是突出显示JPanel的代码

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;

public class HighlightJPanels implements MouseListener
{
JPanel mainPanel;

public HighlightJPanels(){}

 public void mouseEntered(MouseEvent e) {
     mainPanel = (JPanel) e.getSource();
     mainPanel.setOpaque(true);
        
     mainPanel.revalidate();
     mainPanel.repaint();
 }

 public void mouseExited(MouseEvent e) {
     mainPanel = (JPanel) e.getSource();
     mainPanel.setOpaque(false);
        
     mainPanel.revalidate();
     mainPanel.repaint();
 }

 public void mousePressed(MouseEvent e){}
 public void mouseReleased(MouseEvent e){}
 public void mouseClicked(MouseEvent e) {}
 }
最后,这是我得到的输出

有关原因和解决方案,请参见:部分。