0

JButton を ImageIcon に設定するコードを用意しました。同様に、画像にカーソルを合わせると、新しい ImageIcon が表示されますが、新しい IconImage は実際には元のアイコンよりも少し大きくなっています。問題は、ボタンの境界内にまだ存在することです。たとえば、ボタンのサイズが 100、250 で、IconImage のロールオーバーが 120、270 の場合、問題は両側から 20 ピクセルが切り取られることです。

これまでの私の解決策は、実際にはボタンをIconImageのロールオーバーのサイズと同じにすることですが、それに関する私の問題は、マウスを20ピクセルまで上に置いても、画像の横でロールオーバー効果がまだ発生することです。これは明らかに、JButton の境界を変更したためです。

誰かが考えられる解決策を持っているなら、私はそれを大いに感謝します.

これが私がやっていることの例です:

singlePlayerButton = new ImageIcon("GUIImages\\singlePlayerButton.png");
rollOverSinglePlayerButton = new ImageIcon("GUIImages\\rollOverSinlgePlayerButton.png");
btnSinglePlayer = new JButton(singlePlayerButton);
btnSinglePlayer.setOpaque(false);
btnSinglePlayer.setContentAreaFilled(false);
btnSinglePlayer.setBorderPainted(false);
btnSinglePlayer.setFocusPainted(false);
btnSinglePlayer.setBounds(320, 25, 275, 130);
btnSinglePlayer.setRolloverIcon(rollOverSinglePlayerButton);
mainMenu.add(btnSinglePlayer);

他の場所で使用している変数を宣言したと想像してください。

4

2 に答える 2

2

両方のアイコンがまったく同じサイズであることを確認するだけです。必要に応じて、小さい方に透明な境界線を追加します。

これにより、すべてが簡単になります。

于 2013-03-14T23:19:17.510 に答える
0

「MouseListener」インスタンスをボタンに追加して、「mouseEntered」メソッドを実装できます。次に、ボタン (バウンド、イメージなど) を変更し、必要に応じて画面に再描画できます。詳細については、JButton および MouseAdapter クラスの javadoc を参照してください。

于 2013-03-14T23:18:29.893 に答える