相关疑难解决方法(0)

透明JPanel

我想创建一个半透明的JPanel.我通过简单地使用颜色构造函数的RGBA值来完成它,但问题是当我使用事件处理没有正确地进行操作时.我的要求是一个半透明的Jpanel,当鼠标进入它时,此面板的边框变得可见,如果鼠标退出边框,则不可见.我通过遵循代码完成了这个,但问题是它不能正常工作的透明背景(RGBA),但它适用于RGB颜色.

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;

public class MDCW extends JFrame {

      private JPanel contentPane;

     /**
     * Launch the application.
     */
     public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MDCW frame = new MDCW();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MDCW() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 1013, 551);
        contentPane = new JPanel();
        contentPane.setBackground(new Color(0, 139, 139));
        contentPane.setBorder(new EmptyBorder(5, 5, …
Run Code Online (Sandbox Code Playgroud)

java swing jframe

12
推荐指数
2
解决办法
3万
查看次数

Java Nimbus LAF与透明文本字段

我有一个应用程序在几个地方使用禁用的JTextFields是透明的 - 允许显示背景而不是文本字段的正常背景.

运行新的Nimbus LAF时,这些字段是不透明的(尽管设置了setOpaque(false)),并且我的UI被破坏了.好像LAF忽略了不透明的属性.明确地设置背景颜色在几个地方都很困难,并且由于背景图像实际上不起作用而不是最佳 - 它仍然在顶部绘制LAF默认背景,留下类似边框的外观(下面的启动画面具有明确设置背景以匹配图像).

关于如何让Nimbus不为JTextField绘制背景的任何想法?

注意:我需要一个JTextField而不是JLabel,因为我需要线程安全的setText()和包装功能.

注意:我的后备位置是继续使用系统LAF,但Nimbus确实看起来好多了.

见下面的示例图片.


结论

这种行为的意外是由于对Nimbus错误报告中的setOpaque()意图做错误的解释:

这是Swing的原始设计以及它多年来一直令人困惑的问题.问题是setOpaque(false)在退出LAF时产生了副作用,即隐藏背景并不是真正的背景.可以说,我有透明部分和swing的组件应该在其后面绘制父组件.

不幸的是,Nimbus组件似乎也不尊重setBackground(null),否则这将是停止背景绘制的推荐方法.设置完全透明的背景对我来说似乎不直观.

在我看来,setOpaque()/ isOpaque()是一个错误的公共API选择,应该只有:

public boolean isFullyOpaque();
Run Code Online (Sandbox Code Playgroud)

我这样说,因为isOpaque()== true是与Swing的契约,组件子类将负责绘制它的整个背景 - 这意味着父级可以跳过绘制该区域(如果需要)(这是一个重要的性能增强).外部的东西不能直接改变这个合同(合法地),其履行可以编码到组件中.

因此,不应使用setOpaque()设置组件的不透明度.相反,像setBackground(null)这样的东西会导致许多组件"没有背景",因此变得不完全不透明.举例来说,在理想的世界中,大多数组件应该具有如下所示的isOpaque():

public boolean isOpaque() { return (background!=null); }
Run Code Online (Sandbox Code Playgroud)

示例http://i41.tinypic.com/sviczq.png

替代文字http://i44.tinypic.com/35d80ao.png

java swing nimbus

11
推荐指数
1
解决办法
7668
查看次数

创建透明面板

我需要创建一个看不见的面板,但其中的组件(例如,JTextArea,JButton等)应该是可见的.当我点击隐形面板时,它应该变得可见.

我只能使用JRE 1.4,仅此而已.:(

知道如何创建这样一个透明面板???

java panel transparent

5
推荐指数
2
解决办法
1万
查看次数

java中的setOpaque()

任何人都可以解释为什么Nimbius以不同于其他java LaF的方式处理setOpaque().它破坏了我的代码,因为通常透明的组件不再是.

编辑:问题似乎只涉及JTextAreas(这是我需要的)或类似的组件.

编辑编辑:这是实际应用程序的屏幕.在应用trashgod的解决方案时,背景仍然无法显示.

替代文字

编辑编辑编辑:
我尝试了trashgod的建议来覆盖paint().我辛苦工作了好几个小时,无法让它发挥作用.我能够显示背景,但JinternalFrame无法移动,调整大小并选择其文本.调用super.paint(g)无法解决问题.有没有一种简单的方法可以让我失踪?
我采取了一种新方法.JInternalFrame内部是一个JLayeredPane.
第0层 - JLabel
第1层 - JTextArea

移动或调整JInternalFrame时:

  1. 使自己看不见
  2. 拍摄它所包含的容器中的位置的屏幕截图
  3. 用它拍摄的图像绘制JLabel
  4. 使自己再次可见.

因为我无法让JInternalFrame完全透明.我模拟了它的透明度.唯一的问题是,与此相关的开销很大.有什么想法吗?

替代文字


package newpackage;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.UIManager;

/**
 * Example of how to create a transparent internal frame.
 * @author dvargo
 */
public class TransparentInternalFrame extends JInternalFrame {

    JLayeredPane container;


    /**
     * Defualt constructor to set the frame …
Run Code Online (Sandbox Code Playgroud)

java swing look-and-feel nimbus

4
推荐指数
1
解决办法
9624
查看次数

需要Jbuttons透明外观

我正在使用Java Netbeans GUI Builder来制作GUI.我想给按钮一个透明(有光泽)的外观.我正在使用

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Run Code Online (Sandbox Code Playgroud)

这也给了GUI很好的外观,但按钮仍然是相同的无聊按钮.

那么,如何给按钮一个透明的外观呢?

java swing transparency netbeans look-and-feel

3
推荐指数
1
解决办法
6963
查看次数