我目前有一个JScrollPane,我在其中放置了面板。 由于某种原因,面板不是并排放置,而是在JScrollPane的左上角彼此重叠。
public class UI extends javax.swing.JFrame {
ArrayList<LibraryImagePanel> libPanels;
/**
* Creates new form UI
*/
public UI() {
initComponents();
this.setResizable(false);
scrollpane_library.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollpane_library.add(new LibraryImagePanel());
libPanels = new ArrayList<>();
}
...
}
class LibraryImagePanel extends JPanel {
/**
* CTOR
*/
LibraryImagePanel(){
this.setSize(256, 256);
}
/**
*
* @param g Graphics
*/
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(0,0,20,20);
repaint();
}
}
答案 0 :(得分:0)
JPanel
。JScrollPane
LayoutManager
设置为水平或流式布局(或您喜欢的任何一种)。LibraryImagePanel
添加到此父面板。希望这有帮助。
修改强>
当您更改其中的组件层次结构(添加或删除元素)时,还需要在面板上调用validate()
只需致电
scrollPanel.validate();
将每个面板添加到其中后。
答案 1 :(得分:0)
您的代码示例似乎缺少一些重要部分(您在哪里创建scrollpane_library
?)无论如何scrollpane_library
是JScrollPane
,请尝试将面板传递给JScrollPane
的构造函数。您还可以通过构造函数设置滚动条策略。
您可以在JScrollPane中拥有单个组件。如果您要滚动多个面板,则创建另一个包含这些面板的JPanel(让我们调用此bigPanel
),然后在JScrollPane中使用bigPanel
。