Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで透過的なJDialogを実装するにはどうすればよいですか?


JDialog ダイアログのサブクラスです クラスであり、最小化を保持していません および最大化 ウィンドウの右上隅にあるボタン。ダイアログボックスには、モーダルの2種類があります。 および非モーダ l。ダイアログボックスのデフォルトのレイアウトはBorderLayout。です。

以下のプログラムでは、 AlphaContainer をカスタマイズすることで、透過的なJDialogを実装できます。 クラスを作成し、 paintComponent()をオーバーライドします メソッド。

import java.awt.*;
import javax.swing.*;
public class TransparentDialog {
   public static void main (String[] args) {
      JDialog dialog = new JDialog();
      dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      dialog.getRootPane().setOpaque(false);
      dialog.setUndecorated(true);
      dialog.setBackground(new Color (0, 0, 0, 0));
      JPanel panel = new JPanel(new BorderLayout ());
      panel.setBackground(new Color (0, 0, 0, 64));
      dialog.add(new AlphaContainer(panel));
      JSlider slider = new JSlider();
      slider.setBackground(new Color(255, 0, 0, 32));
      panel.add (new AlphaContainer(slider), BorderLayout.NORTH);
      JButton button = new JButton("Label text");
      button.setContentAreaFilled(false);
      panel.add(button, BorderLayout.SOUTH);
      dialog.setSize(400, 300);
      dialog.setLocationRelativeTo(null);
      dialog.setVisible(true);
   }
}
class AlphaContainer extends JComponent {
   private JComponent component;
   public AlphaContainer(JComponent component){
      this.component = component;
      setLayout(new BorderLayout());
      setOpaque(false);
      component.setOpaque(false);
      add(component);
   }
   @Override
   public void paintComponent(Graphics g) {
      g.setColor(component.getBackground());
      g.fillRect(0, 0, getWidth(), getHeight());
   }
}
出力

Javaで透過的なJDialogを実装するにはどうすればよいですか?


  1. JavaでJToggleButtonを実装するにはどうすればよいですか?

    JToggleButton JToggleButton AbstractButtonの拡張です また、オンに切り替えることができるボタンを表すために使用できます。 およびオフ 。 JToggleButtonの場合 を初めて押すと、押したままになり、2回押すと離すことができます。 JToggleButton ActionEventを生成します 押すたびに。 JToggleButton ItemEventを生成することもできます 、このイベントは、選択の概念をサポートするコンポーネントによって使用されます。 JToggleButtonの場合 を押すと選択されます。

  2. JavaでJWindowを使用してスプラッシュ画面を実装するにはどうすればよいですか?

    JWindow は、ユーザーのデスクトップのどこにでも表示できるコンテナです。 タイトルバーはありません 、ウィンドウ 管理 ボタン、 JFrameのようなものです。 JWindow JRootPaneが含まれています その唯一の子クラスとして。 contentPane JWindowの子の親になることができます 。 JFrameのように 、 JWindow は別のトップレベルのコンテナであり、装飾されていないJFrameとして機能します。 タイトルバー、ウィンドウメニューなどの機能はありません 、など。 JWindow スプラッシュ画面ウィンドウとして使用できます これ