JScrollPane内でDefaultListModelで処理されるジェネリックJListを処理しようとしています。しかし、私はJListを見ることができません。ここでJScrollPaneのJListのDefaultListModelがJListを参照できない
クラスです:
FieldScrollList:
public class FieldScrollList<T> extends JScrollPane {
private DefaultListModel<T> listModel;
public int length() {
return listModel.size();
}
public FieldScrollList() {
setBorder(new TitledBorder(this.getClass().getSimpleName()));
setBackground(Color.PINK);
listModel = new DefaultListModel<>();
JList<T> jList = new JList<>(listModel);
add(jList);
jList.setBorder(new TitledBorder(jList.getClass().getSimpleName()));
}
public void clear() {
listModel.clear();
}
public void push(T t) {
listModel.add(length(),t);
}
public <C extends Collection<T>> void pushAll(C coll) {
coll.forEach(this::push);
}
public void pushAll(T[] coll) {
for (T t : coll) {
push(t);
}
}
}
そして、ここではそれを使用したクラスです。この例では、リスト項目を表示するFieldScrollList:hiとhelloを示します。
public class test {
public static void main(String[] args) {
new Thread(() -> {
//---------------------------------- Content initialization ------------------
JFrame frame = new JFrame("Test");
JPanel panel = new JPanel();
FieldScrollList<String> list = new FieldScrollList<String>();
//---------------------------------- Strings initialization ------------------
ArrayList<String> strings = new ArrayList<>();
strings.add("Hello");
strings.add("Hi");
strings.forEach(list::push);
//---------------------------------- JPanel configuration --------------------
panel.setLayout(new GridLayout(1,1));
panel.add(list);
//---------------------------------- JFrame configuration --------------------
frame.add(panel);
frame.setPreferredSize(new Dimension(550,600));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}).start();
}
}
そして結果はそのようなものです:
国境やsetbackgroundsの目標は(視覚的に)コンテンツの場所と領域を表示するためにある
私は「ドンフィールドが表示されない理由を理解してください
本当に 'JScrollPane'を拡張する必要がありますか? – Berger
私はJPanelを使い始めましたが、コンポーネントとして使うことができればいいだけです。何が最善でしょうか? –
'revalidate();' 'repaint();' jListを追加した後でこれを試してください –