第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何向 JOptionPane 按鈕添加鼠標(biāo)偵聽器?

如何向 JOptionPane 按鈕添加鼠標(biāo)偵聽器?

墨色風(fēng)雨 2023-08-04 19:10:57
我想更改 JOptionPane.ShowMessageDialog 上按鈕的外觀。我已經(jīng)設(shè)法更改按鈕標(biāo)題UIManager.put("OptionPane.okButtonText", "Text I want");現(xiàn)在,我的下一個目標(biāo)是使 Button 與我的應(yīng)用程序其余部分中的按鈕一樣工作。也就是說,當(dāng)鼠標(biāo)懸停在其上時,它會更改背景和字體顏色。在我的其余按鈕上,我添加了鼠標(biāo)偵聽器,如下所示:    //setting change color on hover        private final MouseListener mouseAction = new MouseAdapter() {            @Override            public void mouseEntered(MouseEvent e) {                JButton rollOver = (JButton)e.getSource();                if (rollOver.isEnabled()) {                    rollOver.setBackground(new Color(163, 184, 204));                    rollOver.setForeground(Color.WHITE);                    rollOver.setFont(b);                }            };            @Override            public void mouseExited(MouseEvent e) {                JButton rollOver = (JButton)e.getSource();                if (rollOver.isEnabled()) {                    rollOver.setBackground(new Color(230, 230, 230));                    rollOver.setForeground(Color.BLACK);                    rollOver.setFont(f);                }            };        };以前在代碼中我設(shè)置了字體變量:    Font f = new Font("System", Font.PLAIN, 12);    Font b = new Font("System", Font.BOLD, 12);我可以從頭開始創(chuàng)建新的對話框并實現(xiàn)這種行為,但這太過分了。有沒有辦法訪問 JOptionPane 上的 Button 并向其添加鼠標(biāo)偵聽器?
查看完整描述

2 回答

?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗 獲得超6個贊

UIManager.put("OptionPane.okButtonText",?"Text?I?want");

上面的代碼將更改您創(chuàng)建的所有 JOptionPanes 上所有“確定”按鈕的文本。

如果您想要更改特定 JOptionPane 上單個按鈕上的文本。

有沒有辦法訪問 JOptionPane 上的 Button 并向其添加鼠標(biāo)偵聽器?

當(dāng)您使用靜態(tài)showXXX(...)方法時,會創(chuàng)建模態(tài) JDialog,因此您無法訪問該對話框或其組件,直到對話框關(guān)閉為止,但為時已晚。

因此,您需要手動創(chuàng)建JOptionPane并將其添加到JDialog.?通過閱讀JOptionPane API和查看標(biāo)題為 的部分可以找到執(zhí)行此操作的基礎(chǔ)知識"Direct Use"。

創(chuàng)建后JOptionPane(在使對話框可見之前),您可以在選項窗格中搜索按鈕并向MouseListener每個按鈕添加 。為了幫助您完成此操作,您可以使用Swing Utils類。它將對選項窗格進(jìn)行遞歸搜索,并將按鈕以List.?然后您可以迭代List并添加MouseListener.

使用此幫助程序類的基本代碼是:

JOptionPane optionPane = new JOptionPane(

? ? "Are you sure you want to exit the application",

? ? JOptionPane.QUESTION_MESSAGE,

? ? JOptionPane.YES_NO_CANCEL_OPTION);


List<JButton> buttons = SwingUtils.getDescendantsOfType(JButton.class, optionPane, true);


for (JButton button: buttons)

{

? ? System.out.println( button.getText() );

}


查看完整回答
反對 回復(fù) 2023-08-04
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗 獲得超11個贊

如果你想在所有OptionPanel中看到相同的效果,我認(rèn)為覆蓋BasicOptionPaneUI是一個很好的解決方案


這是一個最小的例子


public class MyOptionPaneUI extends BasicOptionPaneUI {


    @SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"})

    public static ComponentUI createUI(JComponent c) {

        return new MyOptionPaneUI();

    }


    private static final MyMouseListener m = new MyMouseListener();


    @Override

    public void update(Graphics g, JComponent c) {

        super.update(g, c);

    }


    @Override

    protected void installListeners() {

       JButton button = (JButton) getButtons()[0];

        button.addMouseListener(m);


        super.installListeners();

    }


    @Override

    protected void uninstallListeners() {

        JButton button = (JButton) getButtons()[0];

        button.removeMouseListener(m);


        super.uninstallListeners();

    }


    public static class MyMouseListener extends MouseAdapter{

        @Override

        public void mouseEntered(MouseEvent e) {

            JButton rollOver = (JButton)e.getSource();

            if (rollOver.isEnabled()) {

                rollOver.setBackground(new Color(163, 184, 204));

                rollOver.setForeground(Color.WHITE);

            }

        };


        @Override

        public void mouseExited(MouseEvent e) {

            JButton rollOver = (JButton)e.getSource();

            if (rollOver.isEnabled()) {

                rollOver.setBackground(new Color(230, 230, 230));

                rollOver.setForeground(Color.BLACK);

            }

        };

    }

}

在你的框架你的主類中,你可以添加此代碼來加載 UIDefoult 中的類


static{

   UIManager.put("OptionPaneUI", MyOptionPaneUI.getClass().getCanonicalName());

}

因為getButtons()[0],因為我在里面看到了這段代碼BasicOptionPaneUI


else if (type == JOptionPane.OK_CANCEL_OPTION) {

                    defaultOptions = new ButtonFactory[2];

                    defaultOptions[0] = new ButtonFactory(

                        UIManager.getString("OptionPane.okButtonText",l),

                        getMnemonic("OptionPane.okButtonMnemonic", l),

                        (Icon)DefaultLookup.get(optionPane, this,

                                          "OptionPane.okIcon"), minimumWidth);

                    defaultOptions[1] = new ButtonFactory(

                        UIManager.getString("OptionPane.cancelButtonText",l),

                        getMnemonic("OptionPane.cancelButtonMnemonic", l),

                        (Icon)DefaultLookup.get(optionPane, this,

                                          "OptionPane.cancelIcon"), minimumWidth);

                } else {

                    defaultOptions = new ButtonFactory[1];

                    defaultOptions[0] = new ButtonFactory(

                        UIManager.getString("OptionPane.okButtonText",l),

                        getMnemonic("OptionPane.okButtonMnemonic", l),

                        (Icon)DefaultLookup.get(optionPane, this,



                "OptionPane.okIcon"), minimumWidth);

            }

方法內(nèi)部protected Object[] getButtons()


如果您想要效果鼠標(biāo)懸停在按鈕上,我正在研究這個庫并提供了鼠標(biāo)懸停的解決方案。


如果您可以使用此常量對庫內(nèi)的 DefaultButton 進(jìn)行個性化設(shè)置


UIManager.put("Button[Default].background", new Color(163, 184, 204));

UIManager.put("Button[Default].foreground", Color.WHITE);

UIManager.put("Button[Default].mouseHoverColor", new Color(230, 230, 230));

ps:這僅是您需要在項目中添加鼠標(biāo)懸停時的信息


查看完整回答
反對 回復(fù) 2023-08-04
  • 2 回答
  • 0 關(guān)注
  • 204 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號