[英]Why the itemListener not automatically triggered after setSelectedIndex(0) is called?
cbTexture.setSelectedIndex(0);
在構造函數的末尾被調用,但是它並不能自動地在其后選擇子紋理。 為什么?
public class TradeInDialog extends JDialog {
public TradeInDialog(Database _db) throws SQLException
{
....
setupTexture();
cbTexture.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
selectedTexture = cbTexture.getSelectedIndex()+1;
setupSubTexture();
}
});
....
cbTexture.setSelectedIndex(0);
}
您必須在事件處理程序類之外進行setupSubTexture
方法的第一次調用,因此您的代碼必須像這樣:
公共類TradeInDialog擴展了JDialog {
public TradeInDialog(Database _db) throws SQLException
{
selectedTexture = 1;
setupSubTexture();
setupTexture();
cbTexture.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
selectedTexture = cbTexture.getSelectedIndex()+1;
setupSubTexture();
}
});
cbTexture.setSelectedIndex(0);
}
默認情況下,由於該setupSubTexture();
默認情況下已經選擇了下一個第一個元素中的問題setupSubTexture();
調用cbTexture.setSelectedIndex(0);
時未執行該方法cbTexture.setSelectedIndex(0);
。 嘗試cbTexture.setSelectedIndex(1);
您會看到它有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.