Java jlabel中顯示的衣服圖片不能根據jcombobox的內容進行更新。
還有我想清空jlabel的圖,怎麽做!
JLabel.setIcon(null),編譯錯誤。
請給我壹些建議。
-解決方案。
我運行label.setIcon(null)沒有問題。我給妳舉個例子。運行時,需要在項目目錄下有壹個images目錄,和八張2.jpg壹樣的圖片...8.jpg被添加到該目錄中。
Java code import Java . awt . gridlayout;
導入Java . awt . event . action event;
導入Java . awt . event . action listener;
導入Java . net . URL;
導入javax . swing . border factory;
導入javax . swing . image icon;
導入javax . swing . jbutton;
導入javax . swing . jcombobox;
導入javax . swing . jframe;
導入javax . swing . jlabel;
導入javax . swing . jpanel;
導入javax . swing . ui manager;
公共類ImageRandomAccess2實現ActionListener {
最終靜態整數圖像數= 8;//顯示的圖片總數
最終靜態int START _ INDEX = 3;//初始化時默認顯示的圖片
image icon[]IMAGES = new image icon[NUM _ IMAGES];//初始化數組
JPanel主面板、選擇面板、顯示面板;//三個面板
JLabel selectLabel = null
JComboBox combobox = null//控制顯示哪些圖片,而不是立即滾動。
JButton controlBtn = null
JLabel imageIconLabel = null
//構造函數
public ImageRandomAccess2() {
//創建階段選擇和顯示面板。
select panel = new JPanel();
display panel = new JPanel();
//向子面板添加各種小部件。
add widgets();
//創建包含兩個子面板的主面板。
main panel = new JPanel();
main panel . set layout(new GridLayout(2,1,5,5));
main panel . set border(border factory . createemptyborder(5,5,5,5));
//將選擇和顯示面板添加到主面板。
main panel . add(select panel);
main panel . add(display panel);
}
//創建和小部件來選擇和顯示人物的圖像。
私有void addWidgets() {
//獲取圖像並將它們放入ImageIcon的數組中。
for(int I = 0;我& lt數量_圖像;i++) {
string imageName = " images/"+(I+1)+"jpg ";
System.out.println("獲取圖像:"+imageName);
//URL icon URL = class loader . get system resource(imageName);
image icon icon = new image icon(imageName);
images[i] =圖標;
}
//創建顯示圖像的標簽並加上邊框
//它。
imageIconLabel = new JLabel();
imageiconlabel . sethorizontal alignment(JLabel。中心);
imageiconplabel . setvertical alignment(JLabel。中心);
imageiconplabel . setverticaltextposition(JLabel。中心);
imageiconlabel . sethorizontaltextposition(JLabel。中心);
imageiconplabel . set border(border factory . createcompoundborder(
border factory . createloweredbevelborder(),
border factory . createemptyborder(5,5,5,5)));
imageiconplabel . set border(border factory . createcompoundborder(
border factory . createemptyborder(0,0,10,0),
imageiconplabel . get border()));
ControlBtn=new JButton("無圖");
SelectLabel=new JLabel("選擇圖片");
combobox = new JComboBox();
for(int I = 0;我& lt數量_圖像;i++){
combobox . additem(I);
}
select label . setlabel for(combobox);
//顯示第壹個圖像。
imageiconplabel . seticon(images[START _ INDEX]);
imageiconplabel . settext(" ");
//在選擇面板周圍添加邊框。
select panel . set border(border factory . createcompoundborder(
border factory . createtitledborder("選擇階段"),
border factory . createemptyborder(5,5,5,5)));
//在顯示面板周圍添加邊框。
display panel . set border(border factory . createcompoundborder(
border factory . createtitledborder("顯示階段"),
border factory . createemptyborder(5,5,5,5)));
//添加控件按鈕以選擇面板和圖像標簽
//顯示面板。
select panel . add(select label);
select panel . add(combobox);
select panel . add(control BTN);
display panel . add(imageIconLabel);
//偵聽來自控制按鈕的事件。
//control BTN . addactionlistener(this);
combobox . addactionlistener(this);
control BTN . addactionlistener(this);
}
布爾run = false
ActionListener接口的實現。
public void action performed(action event事件){
if(event . getsource()= = combobox){
int image index = combobox . getselectedindex();
imageicon label . seticon(images[image index]);
}
if(event . getsource()= = control BTN){
system . out . println("-");
imageiconplabel . seticon(null);
//ImageIcon label . seticon(new image icon());
}
}
//主方法
公共靜態void main(String[] args) {
//創建ImageRandomAccess的新實例
imagerandomaccess 2 phases = new imagerandomaccess 2();
//為面板創建框架和容器。
JFrame mainFrame = new JFrame(" ImangeRandomAccess ");
//設置外觀。
嘗試{
ui manager . setlookandfeel(ui manager
。getCrossPlatformLookAndFeelClassName());
} catch(異常e) {
}
mainframe . setcontentpane(phases . main panel);
//關閉窗口時退出。
mainframe . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);
//顯示轉換器。
大型機. pack();
mainframe . setlocationrelativeto(null);
mainframe . set visible(true);
}
}