我正试图在右边框中制作JComponent
不透明。
我想制作一个具有我特定特征的对象,所以我使用的JComponent
可以是不透明的
这是因为我会创建一个库,我不想使用JPanel
或JLabel
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);
}
}
我不知道为什么它不显示不透明,如果我使用JLabel
作品,那么我错过了什么?
感谢您的建议和答案
答案 0 :(得分:2)
我建议您轻松解决问题:使用JPanel。除非你有充分的理由不使用它作为你班级的基础,否则我仍然认为这是你问题的最佳解决方案。否则,您需要一些代码,如:
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,则无需再次使用。
您的代码存在其他问题:
setBounds(...)
,这将导致创建一个严格难以增强和调试的GUI。你应该避免使用这种类型的布局。