我试图用一个包含数百个JRadioButtons和两个JButton的JScrollPane制作一个JFrame(OK和Cancel)。最后我发现了JOptionPane.showConfirmDialog(...)方法。
它似乎是我想要的完美:从第一个JFrame,打开一个"窗口"使用包含我的单选按钮的Scroll,当我点击" OK"时,在我的第一个JFrame中获取所选单个按钮。 但是,当showConfirmDialog出现时,没有JScrollPane,我们看不到窗口的底部(有数百个单选按钮)。所以:
我尝试调用JOptionPane.showConfirmDialog(myScrollPane)而不是将JScrollPane添加到JPanel并使用JPanel调用该方法...它没有工作
我尝试初始化一个JOptionPane对象,然后设置它的最大大小,然后用初始化的对象调用方法showConfirmDialog,但它不起作用,因为"该方法必须在静态中调用方式"
所以我需要你的帮助,这是我的代码,我不明白什么是错的,为什么我没有在确认对话框中滚动我的单选按钮。
public void buildMambaJobPathWindow(ArrayList<String> list) {
ButtonGroup buttonGroup = new ButtonGroup();
JPanel radioPanel = new JPanel(new GridLayout(0,1));
for(int i=0; i<list.size(); i++) {
JRadioButton radioButton = new JRadioButton(list.get(i));
buttonGroup.add(radioButton);
radioButton.addActionListener(this);
radioButton.setActionCommand(list.get(i));
radioPanel.add(radioButton);
}
JScrollPane myScrollPane = new JScrollPane(radioPanel);
myScrollPane.setMaximumSize(new Dimension(600,600));
JOptionPane.showConfirmDialog(null, myScrollPane);
}
// Listens to the radio buttons
public void actionPerformed(ActionEvent e) {
String result = e.getActionCommand();
}
感谢您的时间。
答案 0 :(得分:1)
如图here所示,您可以覆盖滚动窗格的getPreferredSize()
方法以确定所需的大小。如果任一维度的内容较大,则会根据需要显示相应的滚动条。
JScrollPane myScrollPane = new JScrollPane(radioPanel){
@Override
public Dimension getPreferredSize() {
return new Dimension(600, 600);
}
};
JOptionPane.showConfirmDialog(null, myScrollPane);