Я пытаюсь создать текстовую приключенческую игру, в которой верхняя часть экрана - это JTextArea внутри JScrollPane, которая показывает, что происходит, а нижняя часть - это JOptionPane, где вы нажимаете кнопку, чтобы сделать выбор. По умолчанию кнопки расположены горизонтально. Проблема только в том, что если у меня слишком много кнопок, нет места для новых, и они выталкиваются с экрана. Мне нужно, чтобы они располагались вертикально, потому что они толще, чем высокие. JOptionPane и JScrollPane вложены в gridLayout, который вложен в JFrame. Вот метод, который я использую для создания рамки:
/**
* Make the frame and everything in it
*/
private void makeFrame()
{
frame = new JFrame("Adventure!");
JPanel contentPane = (JPanel)frame.getContentPane();
contentPane.setBorder(new EmptyBorder(6, 6, 6, 6));
contentPane.setLayout(new GridLayout(0, 1));
textArea = new JTextArea(20, 50);
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setFont(new Font("font", Font.BOLD, 15));
JScrollPane scrollPane = new JScrollPane(textArea);
contentPane.add(textArea);
optionPane = new JOptionPane("", JOptionPane.DEFAULT_OPTION, JOptionPane.DEFAULT_OPTION, null, null);
contentPane.add(optionPane);
frame.pack();
// place the frame at the center of the screen and show
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);
frame.setVisible(true);
}
JPanel
сGridLayout
илиGridBagLayout
или даже _4 _ а>. Возможно, вы захотите, но панель также должна быть вJScrollPane
- person MadProgrammer   schedule 23.01.2016JDialog
и устанавливаете его панель наBoxLayout
. - person user1803551   schedule 23.01.2016JDialog
? - person Bom Tomdabil   schedule 23.01.2016JDialog
и добавьте свою панель к нему. Он ведет себя аналогичноJFrame
. - person user1803551   schedule 23.01.2016// place the frame at the center of the screen and show Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);
можно заменить на ..// place the frame at the center of the screen and show frame.setLocationRelativeTo(null);
- person Andrew Thompson   schedule 23.01.2016setContentPane
? Потому что у меня это не работает. - person Bom Tomdabil   schedule 23.01.2016JButtons
вGridLayout
? - person Bom Tomdabil   schedule 23.01.2016