【发布时间】:2014-03-21 18:10:41
【问题描述】:
我正在向面板动态添加一些 JLabel。当用户点击标签时,它应该返回它包含的文本。我正在尝试以下代码:
private JLabel l;
private JPanel A;
private void LoadLabels(){
A.setLayout(new java.awt.GridBagLayout());
java.awt.GridBagConstraints gbc;
gbc = new java.awt.GridBagConstraints();
gbc.fill = java.awt.GridBagConstraints.BOTH;
gbc.anchor = java.awt.GridBagConstraints.CENTER;
gbc.weighty = 0;
gbc.ipadx = 10;
gbc.ipady = 10;
gbc.insets = new java.awt.Insets(1, 1, 1, 1);
for(int gx = 0; gx<15; gx++){
JLabel Sold = label(String.valueOf(gx+1));
Sold.setBackground(Color.yellow);
gbc.gridx = gx;
gbc.gridy = 0;
gbc.weightx = .5;
A.add(Sold, gbc);
}
// JLabel is declared here:
private JLabel label(String x){
l = new JLabel(x);
l.setFont(new java.awt.Font("Tahoma", 0, 16));
l.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
l.setOpaque(true);
l.setBorder(javax.swing.BorderFactory.createEtchedBorder());
l.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
l.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
lMouseClicked(evt);
}
});
return l;
}
//Now I am writing mouseClick event like this:
private void lMouseClicked(java.awt.event.MouseEvent evt) {
if(evt.getSource()==l){
System.out.println(l.getText());
}
为什么这个鼠标事件总是返回最后一个 JLabel 文本? (输出始终为 14)如何获得每个 JLabel 的实际值?请帮忙。
【问题讨论】:
标签: java swing mouseevent jlabel