我想知道是否有任何方法將重點放在我的JLabel
上。 我有一系列的標籤,我想知道我是否選擇了其中任何一個。鼠標焦點在JLabel
我想使用MouseListener
,但不知道JLabel
的什麼屬性用於設置焦點或在某些模式下說我選擇了該標籤。
謝謝大家,對不起我的英文不好。
我想知道是否有任何方法將重點放在我的JLabel
上。 我有一系列的標籤,我想知道我是否選擇了其中任何一個。鼠標焦點在JLabel
我想使用MouseListener
,但不知道JLabel
的什麼屬性用於設置焦點或在某些模式下說我選擇了該標籤。
謝謝大家,對不起我的英文不好。
要檢測是否有人在標籤上點擊,這個代碼將工作:
package com.sandbox;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class SwingSandbox {
public static void main(String[] args) {
JFrame frame = buildFrame();
JPanel panel = new JPanel();
BoxLayout layout = new BoxLayout(panel, BoxLayout.X_AXIS);
panel.setLayout(layout);
frame.getContentPane().add(panel);
JLabel label = new JLabel("Click me and I'll react");
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("clicked!");
}
});
panel.add(label);
panel.add(new JLabel("This label won't react"));
}
private static JFrame buildFrame() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
return frame;
}
}
label.setSize()是什麼意思?無論如何,佈局經理都會忽略它。 – camickr
@camickr那是因爲「歷史」原因。我將刪除該行。 –
您可以添加FocusListener
您JLabel
這樣,每當它接收的焦點,它的聽衆將得到通知。這是一個樣本測試。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class JLabelFocusTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
JFrame frame = new JFrame("Demo");
frame.getContentPane().setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JLabel lblToFocus = new JLabel("A FocusEvent will be fired if I got a focus.");
JButton btnFocus = new JButton("Focus that label now!");
btnFocus.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
lblToFocus.requestFocusInWindow();
}
});
lblToFocus.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
System.out.println("Label got the focus!");
}
});
frame.getContentPane().add(lblToFocus, BorderLayout.PAGE_START);
frame.getContentPane().add(btnFocus, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
});
}
}
你想設置**焦點還是要檢測**焦點? –
我想檢測是否有人點擊我的標籤 – Rotom92
使用Jlabel.addMouseListener(....)進行測試。 – Chuidiang