java - 使 JComponent 不透明

标签 java swing paintcomponent jcomponent

我正在尝试使 JComponent 在右边框中不透明。

我想创建一个具有我的特定特征的对象,因此我使用不透明的 JComponent

这是因为我将制作一个库,并且我不想使用 JPanelJLabel

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;

public class ProbadorCodigos {

    JFrame Frame=new JFrame();
    JComponent BORDEDE=new JComponent() {private static final long serialVersionUID = 2222L;};

    public ProbadorCodigos() {

        Frame.setSize(500, 500);
        Frame.setResizable(false);
        Frame.setUndecorated(false);
        Frame.setLayout(null);
        Frame.setLocationRelativeTo(null);
        Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Frame.getContentPane().setBackground(Color.darkGray);
        Format();
        Action();
    }


    private void Format() {

        BORDEDE.setBounds(Frame.getWidth()-100, 0, 100, Frame.getHeight());
        BORDEDE.setOpaque(true);
        BORDEDE.setVisible(true);
        BORDEDE.setEnabled(true);
        BORDEDE.setFocusable(true);
        BORDEDE.setBackground(Color.red);
        System.out.println(BORDEDE);
    }
    private void Action() {


        Frame.add(BORDEDE);
    }    

    public static void main(String[] args) {


        ProbadorCodigos Ventana=new ProbadorCodigos();
        Ventana.Frame.setVisible(true);
    }

}

noo

我不知道为什么它不显示不透明,如果我使用 JLabel 可以工作,那么我错过了什么?

感谢您的建议和解答

最佳答案

我对解决您的问题的总体简易性的建议是:使用 JPanel。除非你有充分的理由不使用它作为你的类(class)的基础,否则它在我看来仍然是解决你的问题的最佳解决方案。否则,您将需要一些代码,例如:

JComponent bordede = new JComponent() {
  private static final long serialVersionUID = 2222L;

  @Override
  protected void paintComponent(Graphics g) {
     super.paintComponent(g);
     int width = getWidth();
     int height = getHeight();
     g.setColor(getBackground());
     g.fillRect(0, 0, width, height);
  }
};

如果您只是使用 JPanel,那么这也是不必要的。

代码的其他问题:

  • 您的代码不符合 Java 命名约定,因此会让其他 Java 程序员感到困惑。
  • 您正在使用空布局和 setBounds(...),这将导致创建一个难以增强和调试的严格 GUI。您应该避免使用这种类型的布局。

关于java - 使 JComponent 不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409885/

相关文章:

java - jpa与hibernate的异同点

java - 我可以从查询 MongoDB 的微服务获得多个响应吗

java - 如何在 Java 中将绘制组件放在背景之上?

java - 绘制图像时,paintComponent 会清除 JPanel

java - Java中的paintComponent()没有被调用

java - 野蝇群休息 Controller

java - 当我将 LinkedList 放入数组中时键入安全警告

swing - 带有 JComboBox 编辑器的 JTable : Is it possible to edit the cell value from keyboard with one key press

java - 图形绘制图像双陆棋游戏

java - 添加组件时 Gridbag 布局会调整大小