ボタン全体をカバーし、ボタンの中央に座るようにアイコンのサイズを変更しようとしています。私が試してみると、それは私のボタンを伸ばすと、他のすべてを台無しにする。どうしたらいいですか?現在、私のコードは次のようになります。そのクラス内のクラスの私のコンストラクタでボタンに合わせるJavaの伸縮アイコン
..
javax.swing.JButton Console = new javax.swing.JButton;
ScaleButtonImage(Console, ConsoleEnabledImage);
..
private void ScaleButtonImage(javax.swing.JButton Button, java.awt.Image ButtonIcon) {
double Width = ButtonIcon.getWidth(Button);
double Height = ButtonIcon.getHeight(Button);
double xScale = 28/Width;//Button.getWidth()/Width;
double yScale = 28/Height;//Button.getHeight()/Height;
double Scale = Math.min(xScale, yScale); //ToFit
//double Scale = Math.max(xScale, yScale); //ToFill
java.awt.Image scaled = ButtonIcon.getScaledInstance((int)(Scale * Width), (int)(Scale * Height), java.awt.Image.SCALE_SMOOTH);
Button.setIcon(new javax.swing.ImageIcon(scaled));
}
LAYOUT:
.addGroup(layout.createSequentialGroup()
.addComponent(Enable, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Graphics, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Debug, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Console, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
その後、私はすべてのリンクそれらは水平方向と垂直方向にすべて同じサイズです。
代わりに、以下のようになります。また、最初のボタンのアイコンを変更すると、すべてのボタンが自分の制約のためにサイズが変わります。どのようにアイコンをボタンに合わせるのですか?
を[@mreことにより、Q&Aを確認してください](のhttp:/ /stackoverflow.com/search?q=user:584862+[jbutton])、JButtonはLayoutManagerを実装していません – mKorbel
既に試しました。ラベルイメージを追加してボタンに追加しても機能しません。 また、ボタンにborderlayoutを実装しようとしました。まだ動作しません。 – Brandon
画像のサイズを変更する方法に何か問題があると思われます(倍xScale = 28 /幅;倍yScale = 28 /高さ; ...)。この方法では、比率は4:3や16:9など元の比率ではなく1:1になります。 –