Что я хочу сделать панель содержимого прозрачной и синей полоски обычного темного bluecolour. Но в процессе создания прозрачности прозрачности я также делаю эту полоску тусклой, (например, черный цвет окрашивается над ним).Нужна помощь в исправлении рисунка в моем маленьком Свинг-коде
Как я могу это исправить?
(Закомментируйте метод краски и обратите внимание на изменение в strip.This является то, что я хочу, как конечный результат)
Вот код:
class Home extends JFrame
{
int width=GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width;
int height=GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height;
public Home()
{
super("WiND");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setUndecorated(true);
setSize(width,height);
setBackground(new Color(0,0,0,0));
setUndecorated(true);
setVisible(true);
setLayout(new FlowLayout());
JPanel p=new JPanel();
p.setBackground(new Color(0x0D70E8));
p.setPreferredSize(new Dimension(width,height/10));
add(p);
}
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2=(Graphics2D)g;
LinearGradientPaint p=new LinearGradientPaint(0,0,0,height,new float[]{0f,1f},new Color[]{new Color(0.2498f,0.2498f,0.2498f,0.3f),new Color(0.1598f,0.1598f,0.1598f,0.8f)});
g2.setPaint(p);
g2.fillRect(0, 0, width,height);
}
}
(я это сделал то же самое, а год назад, но теперь через год я забыл, как я сделал это)
EDIT
Я сделал изменения к paint() только в соответствии с @ Sage.I получить следующий вывод Исправить синюю полосу, но теперь серый полупрозрачный фон исчез.
краски прозрачные цвета первого. Затем окрасьте непрозрачные цвета после. – Cruncher
1) Для лучшей помощи раньше, отправьте сообщение [SSCCE] (http://sscce.org/).2) Вместо того, чтобы рисовать в контейнере верхнего уровня, таком как 'JFrame', добавьте' JPanel' и сделайте обычную картину в методе 'paintComponent (Graphics)'. Также верните разумный предпочтительный размер для настраиваемого компонента, чтобы помочь менеджеру макета. –
@Cruncher: Как я могу это сделать? Я полагаю, что 'paint()' всегда будет вызываться потом. –