我正在尝试为IntelliJ创建一个弹出插件。弹出窗口包含一个JPanel(parentPanel),它包含一个JList(我使用JBList,它只是Intellij的一个sublcass)和JTextField。列表的内容是动态构建的,具体取决于用户按Tab键时JTextField的内容。
这就是我目前正在尝试的。结果是使用适当的元素构造新的JList,但JPanel保持完全相同的大小,因此大多数JList被阻塞。如何展开面板(以及整个弹出窗口)以便整个列表可见?
我是否在使用JPanel做错了,或者是弹出窗口本身的大小?
parentPanel从此行接收GridLayout
this.setLayout(new GridLayout(2,1));
以下是修改JList的代码。
DefaultListModel listModel = (DefaultListModel) parentPanel.getFileList().getModel();
listModel.removeAllElements();
VirtualFile[] children = currentPathFile.getChildren();
for(int i = 0; i < children.length; ++i) {
listModel.addElement(children[i].getPath());
}
parentPanel.remove(1); // The list is the panel's second child
parentPanel.add(new JBList(listModel));
parentPanel.revalidate();
parentPanel.repaint();
答案 0 :(得分:1)
如果JPanel
是FlowLayout
,则其默认布局为GridLayout
,其保留初始首选大小,通常由原始内容的首选大小定义。尝试将其更改为GridLayout
,这将允许列表在调整封闭面板大小时增大和缩小。
这也不起作用。已添加
setVisibleRowCount()
代码。
由于JBList
扩展了JList
,您可以使用var viewPort = d3.svg.brush()
.x(xScale)
.on('brush', function () {
var newDomain = viewPort.empty() ? xScale.domain() : viewPort.extent();
console.log(JSON.stringify(newDomain, null, 2));
detailsChart.setXDomain(newDomain);
detailsChart.renderAxis();
detailsChart.renderSeries();
});
,如图所示here。