私のプログラムでは、黄色の背景をオーバーレイするために、JFrameに半透明の白から透明のグラデーションを付けたいと思いました。これは正常に機能し、プログラムの設定がユーザーに対してどのように機能するかを考えると、白から透明にする必要があります。しかし、私がプログラムを大学に持ち込むと(JRE7からJRE6)、グラデーションは白から黒っぽくなり、透明になります...白い色の不透明度を上げ始めるまではそれほど悪くはありません...とにかく私はそこにいますこれを修正できますか?
これが私のJFrameコードの上からの関連コードです。
public class DictionaryGUI extends JFrame
{
protected JPanel pGradientPane;
//Interface gradient specification
private Color pInterfaceColour = new Color(255, 245, 62);
protected int iDegreeWhite = 180
protected int iDegreeBlack = 0
DictionaryGUI(int iWidth, int iHeight)
{
/*General definitions*/
super(String.format("French Verb Conjugator - Version %s", MainLauncher.version));
setSize(iWidth, iHeight);
new Menu(this);
this.iWidth = iWidth;
this.iHeight = iHeight;
getContentPane().setBackground(pInterfaceColour);
pGradientPane = new JPanel(new GridBagLayout())
{
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics pGraphics)
{
Graphics2D pGraphicsGradientRender = (Graphics2D) pGraphics;
pGraphicsGradientRender.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint pGradient = new GradientPaint(0, 0, new Color(255, 255, 255, iDegreeWhite), 0, getHeight(), new Color(0, 0, 0, iDegreeBlack));
pGraphicsGradientRender.setPaint(pGradient);
pGraphicsGradientRender.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(pGraphics);
}
};
pGradientPane.setOpaque(false);
pGradientPane.setPreferredSize(new Dimension(iWidth - 16, iHeight - 62));
/*components added to pGradientPane here!*/
add(pGradientPane);
}
そしてメインクラスも:
public class MainLauncher
{
static int iHeight = 400;
static int iWidth = 730;
static String version = "0A3B6";
public static void main(String[] args)
{
try
{
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName()))
{
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {e.printStackTrace();}
DictionaryGUI window = new DictionaryGUI(iWidth, iHeight);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocationByPlatform(true);
window.setVisible(true);
}
JRE6とJRE7の違いはありますか?下の色も白にする必要がありますか?(人々が下部の色を暗くしたい場合に備えて、黒でした。)
誰かがそれらを必要とするならば、私は明日いくつかのスクリーンショットを投稿することができます....
ありがとうジェイミー
編集: グラデーションの2番目の(透明な)色を白に変更すると、問題が修正されます。しかし、なぜ真ん中に透明な黒い色が透けて見えるのか、まだ悩んでいます。それはJRE7と関係があるに違いありません。なぜなら、それが発生する場所だからです...おそらく、グラデーションの透明度がどのように機能するかによって何かが変わったのかもしれません。黒を保ちながらこの問題を解決する方法を知っている人はいますか?