Вот мой код в проблеме. Проблема в том, что если я использую «белый» для установки фона панели, цвета значка в «pic» JLabel становятся очень легкими. Если я использую вместо этого «черный», то цвета pic JLabel видны. Не имеет значения, какие цвета я использую в pic JLabel. Они все освещаются, как только панель установлена в белый цвет.панель setBackground вставляет цвета JLabels в пределах
Есть ли другой способ установить цвет фона панели, не затрагивая цвета JLabel внутри?
Color black = new Color(20, 20, 20, 255);
Color white = new Color(255, 255, 255, 255);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1200, 500);
frame.setVisible(true);
frame.getRootPane().setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
frame.setLocationRelativeTo(null);
frame.setResizable(false);
JPanel panel= new JPanel();
frame.getContentPane().add(panel);
panel.setLayout(null);
panel.getAccessibleContext().setAccessibleName("panel");
panel.getAccessibleContext().setAccessibleDescription(" ");
// this is the line that causes problem
panel.setBackground(black);
JLabel pic = new JLabel(new ImageIcon(showBaseImage()));
panel.add(pic);
pic.setSize(1200, 500);
pic.setLocation(1, 1);
pic.setBackground(black);
public BufferedImage showBaseImage(){
BufferedImage c = new BufferedImage(1200, 500, BufferedImage.TYPE_INT_ARGB);
Graphics2D gg= c.createGraphics();
gg.setPaint(new Color(125, 0, 125, 255 ));
gg.fillRect(0,0, c.getWidth(), c.getHeight());
gg.setPaint(new Color(255, 255, 225, 255 ));
imgFont = new Font("Arial", Font.BOLD, 45);
gg.setFont(imgFont);
gg.drawString("Write something", 20, 20);
gg.dispose();
return c;
}
Ты гений! Большое спасибо –
Это слишком много :) Это общий трюк с Swing. Если ответ касается вашей проблемы, подумайте о ее принятии :) – davidxxx