我有一個問題,當我將鼠標監聽器添加到用作選項卡的組件時,我無法切換選項卡。Tab組件消耗鼠標,所以選項卡不會改變
這說明問題:
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class JTabBug {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JTabbedPane jTabbedPane = new JTabbedPane();
jTabbedPane.addTab("Red", new JLabel("Roses"));
jTabbedPane.addTab("Blue", new JLabel("Skies"));
jTabbedPane.addTab("Green", new JLabel("Grass"));
for (int i = 0; i < jTabbedPane.getTabCount(); i++) {
JLabel tabComponent = new JLabel(jTabbedPane.getTitleAt(i));
tabComponent.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("dragging");
}
});
jTabbedPane.setTabComponentAt(i, tabComponent);
}
JFrame jFrame = new JFrame("Testing");
jFrame.add(jTabbedPane);
jFrame.setSize(400, 500);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
拖動打印出來作爲預期,但你不能改變標籤。
這增加了鼠標移動偵聽器添加的標籤(玫瑰,天空,草地),而不是標籤本身,這是什麼OP是試圖做。 – 2010-12-03 18:05:09
我有一些代碼可以做到這一點...讓我看看我是否能找到它。 – Merky 2010-12-03 18:08:02
我的代碼也有一個錯誤,就像你打電話一樣!我注意到有一個運行代碼的小區域,它切換。點擊選項卡最右側的下方,它會爲我切換。不知道這是什麼交易... – Merky 2010-12-03 18:27:40