当前位置: 首页 > 知识库问答 >
问题:

按钮光标显示不正确

金飞翼
2023-03-14

我有jframe与2 jboard。我有一些组件在第一个jboard和第二个按钮。当我在第一个面板上点击jbuton(调用方法删除所有)它删除所有组件(我调用方法重新验证(),重新绘制())在该jboard然后我显示第二个面板与组件。长话短说,我删除第一个jboard显示第二个,第二个显示第一个jframe,...在jboard之间切换工作正常,当我切换回第一个jboard光标时,按钮指针类型不显示,而是显示正常光标。手光标类型的工作只是罚款的第一次,但当我切换回第一个jboard它是回到默认...

按钮的实现:

        button = new JButton(icon);
        button.setText("OK");
        button.setHorizontalTextPosition(SwingConstants.LEFT);
        button.setFocusPainted(false);
        button.setCursor(new Cursor(Cursor.HAND_CURSOR));

当我切换到第二个jpanel,然后返回到第一个jpanel时,按钮上的光标当然不会出现(“手动光标”)。

我希望当我在帧上的JPanel之间切换时,该按钮保持光标的手动类型。。。

共有1个答案

吕骞尧
2023-03-14

有关与CardLayout交换的最佳示例,请查看CardLayout教程,但此示例显示交换JPanels后按钮的光标没有问题:

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.*;

@SuppressWarnings("serial")
public class TestHandCursor extends JPanel {
   private static final int PREF_W = 400;
   private static final int PREF_H = 300;

   // the cardlayout:
   private CardLayout cardLayout = new CardLayout();

   // the cardlayout using JPanel
   private JPanel cardHolderPanel = new JPanel(cardLayout);

   // the action that a button uses to swap cards
   private SwapCardAction swapCardAction = new SwapCardAction("Swap View");
   private JButton swapButton = new JButton(swapCardAction);

   public TestHandCursor() {
      // set up button's cursor
      swapButton.setFocusPainted(false);
      swapButton.setCursor(new Cursor(Cursor.HAND_CURSOR));

      // dummy JPanels to add to the CardLayout-using JPanel
      JPanel panel1 = new JPanel();
      panel1.add(new JLabel("Panel 1"));
      panel1.add(new JButton("Button 1"));

      String[] items = { "Stormy Monday", "Tuesday's Just as Bad",
            "Wednesday's Worse", "Thursday's Oh So Sad" };
      JPanel panel2 = new JPanel();
      panel2.add(new JLabel("Panel 2"));
      panel2.add(new JComboBox<String>(items));

      JPanel panel3 = new JPanel();
      panel3.add(new JLabel("Panel 3"));

      // add above JPanels to the cardHolderPanel:
      cardHolderPanel.add(panel1, "panel 1");
      cardHolderPanel.add(panel2, "panel 2");
      cardHolderPanel.add(panel3, "panel 3");

      // panel to hold JButton
      JPanel bottomPanel = new JPanel();
      bottomPanel.add(swapButton);

      // add all to the main JPanel
      setLayout(new BorderLayout());
      add(cardHolderPanel, BorderLayout.CENTER);
      add(bottomPanel, BorderLayout.PAGE_END);
   }

   // let's make our GUI a little bigger
   @Override
   public Dimension getPreferredSize() {
      Dimension superSize = super.getPreferredSize();
      if (isPreferredSizeSet()) {
         return superSize;
      }

      int prefW = Math.max(superSize.width, PREF_W);
      int prefH = Math.max(superSize.height, PREF_H);
      return new Dimension(prefW, prefH);
   }

   // button Action to swap "cards" in our CardLayout
   private class SwapCardAction extends AbstractAction {
      public SwapCardAction(String name) {
         super(name);
         int mnemonic = (int) name.charAt(0);
         putValue(MNEMONIC_KEY, mnemonic);
      }

      @Override
      public void actionPerformed(ActionEvent e) {
         cardLayout.next(cardHolderPanel);
      }
   }

   private static void createAndShowGui() {
      JFrame frame = new JFrame("TestHandCursor");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(new TestHandCursor());
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}
 类似资料:
  • 我在微型MCE配置中添加了缩进和向外缩进按钮,如下所示: tinyMCE.init({ // 常规选项模式:“textareas”,主题:“高级”,editor_selector:cl2,皮肤:“o2k7”,插件:“advimage,advlink,spellchecker,inlinepopups,contextmenu,paste,noneditable,mergefields” , spel

  • 我似乎无法让图标出现在我的项目活动顶部的操作栏上,我使用了正确的名称空间和正确的扩展,一切都应该顺利运行,这是菜单项的xml,我添加了一行“xmlns:app=”http://schemas.android.com/apk/res-auto“它还是不起作用。” 这是菜单充气器的java代码

  • 就是这个班 我想将当前日期显示为文本输入按钮。(以下是按钮的布局。) 这是设置文本输入按钮的.kt代码

  • 在 MShowInstDetails show ShowUnInstDetails show 下面添加以下代码: ShowInstDetails hide ;安装过程,该项默认为show,hide表示不显示安装信息,点击显示按钮后显示。 ShowUnInstDetails hide ;卸载过程,该项默认为show,hide表示不显示安装信息,点击显示按钮后显示。 效果如图:

  • 此表单在基于函数的视图中显示单选按钮,但在我引入基于类的视图时更改为复选框,有什么解决办法。我希望他们再次显示单选按钮 表单.py models.py 模板 views.py