我在应用程序中显示等待光标时遇到问题.只要鼠标位于定义自己光标的面板上方,就不会出现等待光标.如果面板未更改光标,则会出现等待光标.
我附上了SSCE来准确解释我的问题.
public class BusyCursorTest extends javax.swing.JFrame {
public BusyCursorTest() {
javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
javax.swing.JMenu menu = new javax.swing.JMenu("Menu");
javax.swing.JMenuItem wait1 = new javax.swing.JMenuItem("Wait 100 ms");
javax.swing.JMenuItem wait2 = new javax.swing.JMenuItem("Wait 250 ms");
javax.swing.JMenuItem wait3 = new javax.swing.JMenuItem("Wait 500 ms");
javax.swing.JMenuItem wait4 = new javax.swing.JMenuItem("Wait 1000 ms");
menu.add(wait1);
menu.add(wait2);
menu.add(wait3);
menu.add(wait4);
menuBar.add(menu);
setJMenuBar(menuBar);
wait1.addActionListener(getActionListener(this, delayActionListener(100)));
wait2.addActionListener(getActionListener(this, delayActionListener(250)));
wait3.addActionListener(getActionListener(this, delayActionListener(500)));
wait4.addActionListener(getActionListener(this, delayActionListener(1000)));
cursorPanel = new javax.swing.JPanel();
cursorPanel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent e) {
cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
}
public void mouseExited(java.awt.event.MouseEvent …Run Code Online (Sandbox Code Playgroud) 前段时间我问了这个问题.所有解决方案都是解决方法.
现在这不可能.我觉得这里出了点问题,但我不知道是不是Swing的MVC模型在概念上是错误的,或者我认为这在概念上是错误的.
这是问题了.我正在使用a JList来实现文档页面的缩略图列表.如果用户从列表中选择另一个缩略图,则加载该页面.要做到这一点,我添加了一个ListSelectionListener到JList,其选择更改时,它加载该页面.但是用户也可以使用其他控件更改页面.当然,我希望通过在此处选择该页面来将其反映在缩略图列表中.所以我setSelectedIndex()要更新了JList.不幸的是,这会产生不必要的影响,ListSelectionEvent这会导致监听器重新加载页面.
现在这里有什么问题?我只是从其他地方改变了模型,所以我自然希望视图自我更新,但我不希望它触发事件.Swing没有实现MVC吗?或者我在这里错过了一点?