18. marts 2003 - 16:51
Der er
1 kommentar og
2 løsninger
Identificere JLabel i JPanel
Jeg har brug for hjælp til at identificere hvilken Jlabel som klikkes på i et JPanel. Desuden er det vigtigt for mig at vide om der klikkes på en JLabel, da panellet ikke er fyldt ud med JLabels men kun nogle små nogle. Der er vigtigt for mig at vide i min JComponent hvilken af JLabels'ne der klikkes på. Jeg har ikke haft succes med at placere mouselisteneren på labelen.
Håber nogen kan give et godt eksempel.
18. marts 2003 - 19:09
#2
Hvis du ikke har held med det, så her:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.awt.*;
public class TestFrame extends JFrame {
private StyledDocument document;
private Style style;
public TestFrame() {
super("Test");
setSize(400,400);
JPanel labelPanel = new JPanel();
JLabel label = new JLabel("Træk musen herhen!");
label.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent event) {
appendColor("Mus er på label", Color.red);
}
public void mouseExited(MouseEvent event) {
appendColor("Mus forlader label", Color.blue);
}
});
labelPanel.add(label);
getContentPane().add(labelPanel, BorderLayout.NORTH);
JTextPane pane = new JTextPane();
document = pane.getStyledDocument();
style = document.addStyle("Color", null);
StyleConstants.setForeground(style, Color.red);
pane.setEditable(false);
getContentPane().add(new JScrollPane(pane), BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
JButton closeButton = new JButton("Luk");
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
buttonPanel.add(closeButton);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
System.exit(0);
}
});
}
private void appendColor(String text, Color color) {
try {
StyleConstants.setForeground(style, color);
document.insertString(document.getLength(), text+"\n", style);
}
catch(BadLocationException ble) {
ble.printStackTrace();
}
}
}
class Go {
public static void main(String[] args) {
new TestFrame().show();
}
}