カスタムListSelectionListenerにいくつかのアクションを設定しようとしていますが、実際にjListのコンポーネントを選択すると、すべてが正常にコンパイルされますが、機能しません。
コードスニペットは次のとおりです。
public class ListSelectionHandler implements ListSelectionListener
{
ListCustomObject o;
@Override
public void valueChanged(ListSelectionEvent e)
{
o = (ListCustomObject) app.MainWindow.jList1.getModel()
.getElementAt(e.getFirstIndex());
new app.actions.Actions().createSetEdgeColorTo(o.getColor());
}
}
私が呼び出しているアクションは機能しており、コンパイル時にエラーは発生しません。しかし、実際には何も起こりません。
このコードにはあまり詳細が含まれていないことはわかっています。このイベントで論理的な間違いを犯していないかどうかを尋ねたいだけです。
前もって感謝します!
編集:アクションとJListの初期化を追加しました:
public Action createSetEdgeColorTo(Color color)
{
return new SetEdgeColorTo(color);
}
class SetEdgeColorTo extends AbstractAction
{
Color color;
SetEdgeColorTo(Color color)
{
super("Set new Edge Color");
this.color = color;
}
@Override
public void actionPerformed(ActionEvent evt)
{
app.graph.GraphEdit.view.getGraph2D().getDefaultEdgeRealizer()
.setLineColor(color);
app.graph.GraphEdit.view.getGraph2D().updateViews();
}
}
と
JList jList1 = new javax.swing.JList();
ListSelectionModel listSelectionModel = jList1.getSelectionModel();
listSelectionModel.addListSelectionListener(new app.jlist
.ListSelectionHandler());
編集3:作り直されたSSCCE:
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.Action;
import javax.swing.JFrame;
public class SSCCE
{
static JList jList1;
public static void main(String[] args)
{
JFrame frame = new JFrame();
jList1 = new JList();
ListSelectionModel listSelectionModel = jList1.getSelectionModel();
listSelectionModel.addListSelectionListener(
new ListSelectionHandler());
DefaultListModel listModel = new DefaultListModel();
jList1.setModel(listModel);
listModel.addElement("String");
listModel.addElement("String two");
frame = new JFrame();
frame.setDefaultCloseOperation(1);
frame.add(jList1);
frame.pack();
frame.setVisible(true);
}
}
class ListSelectionHandler implements ListSelectionListener
{
@Override
public void valueChanged(ListSelectionEvent e)
{
System.out.println("" + e.getFirstIndex());
new Actions().createTestAction();
}
}
class Actions
{
public Action createTestAction()
{
return new TestAction();
}
class TestAction extends AbstractAction
{
TestAction()
{
super("Test Action");
}
@Override
public void actionPerformed(ActionEvent evt)
{
System.out.println("Test Action Fired!");
}
}
}
このSSCCEは、再び起動しないサンプルTestActionの正確な問題を説明します。