Извините, если это глупый вопрос, я очень новичок в Java Swing UI. Я пытаюсь разработать программу, которая захватит мои достижения Steam, и у меня есть базовый код для этого, но теперь я хочу создать для него интерфейс.Java Swing JScrollPane Содержит больше Panes, а не прокрутку?
Следующий код является классом UiHandler, есть много других, однако они не имеют отношения к этой проблеме. Этот класс в основном просто дает два диалоговых окна с запросом на идентификатор пользователя и приложения, а затем должен предоставить окно прокрутки со всеми достижениями и значениями. Вместо этого список отключается от экрана без возможности прокрутки.
Проблема в том, что моя scrollPanel (внутри mainPanel), похоже, не прокручивается (у нее нет полос прокрутки сбоку, а колесо прокрутки ничего не делает). Я бы предположил, что прокрутка будет содержать содержимое scrollPanel (которое является панелью, имеет список всех достижений, сохраненных на Карте).
Это мой первый раз с помощью прокрутки панели, так что я не знаю, что я делаю ....
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.WindowEvent;
import java.util.Iterator;
import java.util.Map;
import javax.swing.*;
@SuppressWarnings("serial")
public class UserInterface extends JFrame {
public UserInterface() {
initUI();
}
@SuppressWarnings("unchecked")
private void initUI() {
UserInteractionHandler uiHandler = new UserInteractionHandler();
setTitle("Steam Stats");
setSize(500, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
JLabel header = new JLabel("Steam Stats", SwingConstants.CENTER);
header.setFont(new Font("trebuchet ms", Font.BOLD, 20));
panel.add(header);
String userId = JOptionPane.showInputDialog("Steam ID 64");
String appId = JOptionPane.showInputDialog("App Id of Game");
Map<String, Integer> allAchievements = uiHandler.getAllAchievements(appId, userId);
@SuppressWarnings("rawtypes")
Iterator it = allAchievements.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> pair = (Map.Entry<String, Integer>) it.next();
JLabel key = new JLabel(pair.getKey());
JLabel value = new JLabel(pair.getValue().toString());
panel.add(key);
panel.add(value);
it.remove();
}
JScrollPane scrollPanel = new JScrollPane(panel);
JPanel mainPanel = new JPanel(new GridLayout(0, 1));
mainPanel.add(scrollPanel);
getContentPane().add(mainPanel, BorderLayout.NORTH);
}
public static void runUi() {
EventQueue.invokeLater(new Runnable() {
public void run() {
UserInterface ui = new UserInterface();
ui.setVisible(true);
}
});
}
}
Вот скриншот окна это производит: http://puu.sh/jVsto/4a4bcbdf6e.png
Спасибо за любую помощь. Mat
Это работает блестяще, спасибо! –