あなたが画像を追加することについて話しているあなたのコードに関して少し混乱していますJLabelが、コードは変数を追加してmButtonそのアイコンを設定することを示しています、それは私にそれを思わせJButtonますか?
どちらの方法でも、JLabel/はJButtonすでにコンテナに追加されていますか、それとも動的に追加されていますか?
1)JLabel/JButtonが表示されているコンテナにまだ存在しない場合:
表示されているコンテナのコンポーネントのサイズ/レイアウトを追加/削除または変更した後、変更を反映するようにコンテナインスタンスを呼び出す必要がrevalidate()あります。repaint()
//code which adds component to visible panel_1
//so changes can be reflected
panel_1.revalidate();
panel_1.repaint();
2)JLabel/JButtonが表示されている場合は、 (同じ)から見たsetIconように、呼び出しrevalidate()とrepaint()それ自体が機能するはずです。JLabel#setIconJButton
* 108: getfield #294 // Field defaultIcon:Ljavax/swing/Icon;
* 111: invokeinterface #346, 1 // InterfaceMethod javax/swing/Icon.getIconHeight:()I
* 116: aload_2
* 117: invokeinterface #346, 1 // InterfaceMethod javax/swing/Icon.getIconHeight:()I
* 122: if_icmpeq 129
* 125: aload_0
* 126: invokevirtual #319 // Method revalidate:()V
* 129: aload_0
* 130: invokevirtual #318 // Method repaint:()V
したがって、LayoutManagerが新しいコンポーネントの追加を正しくサポートしておらず、表示されているスペースに配置されていないなど、他の問題が発生しています。SSCCEを投稿してください。
また、使用しているようですので、使用setSize(..)してsetLocation(..)いるように感じますAbsolute/null LayoutManagerこれはお勧めできません。多くの問題を引き起こす可能性があります。むしろ、適切なものを使用してください。詳細については、LayoutManagerこちらを参照してください。