我正在尝试建立一个基本的GUI库,该库将导入书籍列表并将每本书显示为JButton
在滚动窗格中。但是,在到达那里之前,我只是先尝试调整面板的方向,然后添加一个测试按钮,以确保基础知识能够正常运行,然后再进行详细介绍。
我尝试过移动代码以不同的顺序添加面板,以查看是否存在问题,但仍得到相同的结果。我对此完全陌生,因此我对此的理解非常有限。
public class LibraryPanel extends JPanel{
private Library library;
private JPanel bookButtons, importBooks;
JScrollPane bookList;
JTextField importField;
JButton load;
public LibraryPanel() {
setPreferredSize(new Dimension(200,500));
Library library = new Library();
setLayout(new BorderLayout());
this.setBorder(BorderFactory.createTitledBorder("Library"));
// Import Books Panel
importBooks = new JPanel();
importBooks.setLayout(new BoxLayout(importBooks,BoxLayout.X_AXIS));
importBooks.setBorder(BorderFactory.createTitledBorder("Import Books"));
importField = new JTextField(15);
importBooks.add(importField);
load = new JButton("Load");
importBooks.add(load);
this.add(importBooks,BorderLayout.SOUTH);
load.addActionListener(new loadButtonListener());
// Book List buttons
JPanel bookButtons = new JPanel();
bookButtons.setLayout(new BoxLayout(bookButtons,BoxLayout.Y_AXIS));
JButton testButton = new JButton("TEST Button");
bookButtons.add(testButton);
//for(int i = 0; i<library.getBooks().size(); i++) {
// BookButton button = new BookButton(library.getBook(i));
//button.addActionListener(new BookButtonListener());
// bookButtons.add(button);
//}
// Scroll Pane
bookList = new JScrollPane();
bookList.setBorder(BorderFactory.createTitledBorder("Book List"));
bookList.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
bookList.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
this.add(bookList,BorderLayout.CENTER);
bookList.add(bookButtons);
}
private class loadButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String filename = new String(importField.getText());
library.loadLibraryFromCSV(filename);
}
}
}
但是,我在滚动窗格中根本没有显示“测试”按钮时遇到了问题。面板在那里,但没有测试按钮。
答案 0 :(得分:0)
您无法将组件“添加”到JScrollPane
,这不是它们的工作方式。 JScrollPane
使用JViewport
作为主要组件,然后使用它确定何时应使用滚动条。
有关更多详细信息,请参见How to Use Scroll Panes
而不是...
bookList = new JScrollPane();
//...
bookList.add(bookButtons);
简单地做...
bookList = new JScrollPane(bookButtons);
//...
//bookList.add(bookButtons);