Как я бы добавил подъему инструмента в определенные струны на текстовую карту в Java?JAVA

Программисты JAVA общаются здесь
Anonymous
 Как я бы добавил подъему инструмента в определенные струны на текстовую карту в Java?

Сообщение Anonymous »

Я хотел бы сделать так, чтобы пользователь мог выбрать текст, который он ранее записал в Textarea, а затем он сможет выбрать его и добавить всплывающую подсказку, которая появится при наведении указанного текста.
Я попытался сделать это, но мне удалось, чтобы он показал всплывающую подсказку при парясь в любом месте внутри текста, что означает, что всякий раз, когда создается подсказка, будет показана, если мышь колеблется внутри Textarea, беспрепятственный из того места, где она видит, в отличие от того, чтобы она показала только подсказку, когда мышь зависает строку, в которой она была создана. < /p>
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.HashMap;
import java.util.Map;

public class toolTip extends JFrame {
private JTextArea textArea;
private JPopupMenu popupMenu;
private TooltipManager tooltipManager;

public toolTip() {
setTitle("Custom Tooltip Application");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

textArea = new JTextArea();
tooltipManager = new TooltipManager(textArea);

popupMenu = new JPopupMenu();
JMenuItem addTooltipItem = new JMenuItem("Add Tooltip");
addTooltipItem.addActionListener(e -> addTooltip());
popupMenu.add(addTooltipItem);

textArea.setComponentPopupMenu(popupMenu);

add(new JScrollPane(textArea), BorderLayout.CENTER);
}

private void addTooltip() {
String selectedText = textArea.getSelectedText();
if (selectedText != null && !selectedText.isEmpty()) {
String tooltip = JOptionPane.showInputDialog("Enter tooltip text:");
if (tooltip != null && !tooltip.isEmpty()) {
tooltipManager.addTooltip(selectedText, tooltip);
}
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new toolTip().setVisible(true));
}
}

class TooltipManager {
private JTextArea textArea;
private Map tooltips = new HashMap();

public TooltipManager(JTextArea textArea) {
this.textArea = textArea;
textArea.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
updateTooltip(e);
}
});
}

public void addTooltip(String text, String tooltip) {
tooltips.put(text, tooltip);
}

private void updateTooltip(MouseEvent e) {
String word = getWordAtPoint(e.getPoint());
if (word != null && tooltips.containsKey(word)) {
textArea.setToolTipText(tooltips.get(word));
} else {
textArea.setToolTipText(null);
}
}

private String getWordAtPoint(Point p) {
int pos = textArea.viewToModel2D(p);
String text = textArea.getText();
int start = findWordStart(text, pos);
int end = findWordEnd(text, pos);
return text.substring(start, end);
}

private int findWordStart(String text, int pos) {
while (pos > 0 && Character.isLetterOrDigit(text.charAt(pos - 1))) {
pos--;
}
return pos;
}

private int findWordEnd(String text, int pos) {
while (pos < text.length() && Character.isLetterOrDigit(text.charAt(pos))) {
pos++;
}
return pos;
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... ea-in-java

Вернуться в «JAVA»