Java 当我将鼠标悬停在上面时,JText区域相互重叠
我创建了一个Java类,将鼠标悬停在各个文本区域上,它们会更改背景颜色,使其看起来像是高亮显示的。我还使JTextAreas不不透明,以便它们与当前空白背景具有相同的颜色。问题是文本相互重叠。提前感谢:) 下面是创建文本组件的代码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
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) {}
}
最后,这是我得到的输出
有关原因和解决方案,请参见:部分。