4

JOptionPane の上部を赤やオレンジなどの別の色にする方法があるかどうか疑問に思っています。また、JOptionPane の左側にある画像を変更する方法を考えていました。すでにJavaから使用されているメソッドであるため、不可能だと思います。しかし、私は専門家ではありません。

4

2 に答える 2

7

ここには 3 つのオプションがあります。

  1. それぞれのメッセージ タイプを使用して、定義済みのアイコンのいずれかを使用します。
    JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane error", JOptionPane.ERROR_MESSAGE);

  2. カスタム アイコンを使用する:
    JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane custom dialog", JOptionPane.INFORMATION_MESSAGE, icon);

  3. ルック アンド フィールを使用して、アプリケーション全体で一貫したアイコンを使用します:ルック アンド フィールを設定する方法

ダイアログの詳細については、Java チュートリアルのこのページを参照してください。

于 2012-05-07T21:37:12.667 に答える
6

独自の ImageIcon を JOptionPane に追加できます -- API を確認し、Icon フィールドを使用してメソッドを呼び出し、独自の ImageIcon を渡して、これがどのように機能するかを確認してください。メソッドの Object パラメータ (通常は 2 番目のパラメータ) として渡すだけで、複雑な JPanel (本格的な GUI を含む JPanel) を作成し、それを JOptionPane の基礎にすることもできますJOptionPane.showXXX(...)

もう 1 つのオプションは、独自のモーダル JDialog を作成して使用することです。

作業コード:

import java.awt.Color;
import javax.swing.*;

public class JOptionPaneExample
{
    private void createAndDisplayGUI()
    {
        JOptionPane.showMessageDialog(null, getOptionPanel(), "Modified JOptionPane : ", JOptionPane.PLAIN_MESSAGE);
    }

    public static void main(String... args)
    {   
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new JOptionPaneExample().createAndDisplayGUI();
            }
        });
    }

    private JPanel getOptionPanel()
    {
        JPanel panel = new JPanel();
        panel.setOpaque(true);
        panel.setBackground(Color.RED);
        try
        {
            java.net.URL url = new java.net.URL("http://gagandeepbali.uk.to/gaganisonline/images/swing/geek.gif");
            ImageIcon image = new ImageIcon(url);
            JLabel label = new JLabel("I am one MODIFIED JOPTIONPANE's LABEL.", image, JLabel.RIGHT);
            panel.add(label);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return panel;
    }
}
于 2012-05-07T21:33:03.970 に答える