Java: текст не переносится в диалоге JFrame - PullRequest
0 голосов
/ 01 июня 2011

Я использую JFrame, чтобы представить окно сообщения с некоторым текстом и 2 кнопками. Как мне автоматически обернуть текст в зависимости от размера поля?

Вот мой текущий код:

        dialogFrame = new JFrame();

        JButton newButton = new JButton("New");
        newButton.addActionListener(new newUploadAction());

        JButton resumeButton = new JButton("Resume");
        resumeButton.addActionListener(new resumeUploadAction());

        //dialogFrame.setUndecorated(true);

        JPanel addPanel = new JPanel();

        JPanel addPanel2 = new JPanel();

        addPanel.add(newButton);
        addPanel.add(resumeButton);

        String text = "<html><p>A previous control file exists for this file. ";
        text += "Would you like to initiate a new transfer or resume the previous one?</p></html>";

        JLabel testLabel = new JLabel(text);

        //testLabel.setPreferredSize(new Dimension(1, 1)); 

        addPanel2.add(testLabel);


        Container content = dialogFrame.getContentPane();


        //content.setBackground(Color.white);
        content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS)); 

        content.add(addPanel2);
        content.add(addPanel);


        dialogFrame.setSize(200,200);
        dialogFrame.setVisible(true);
        dialogFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Я где-то читал, что зовет

  testLabel.setPreferredSize(new Dimension(1, 1)); 

вызовет поведение обтекания, которое я хочу, но это просто привело к тому, что текст вообще не отображается.

1 Ответ

3 голосов
/ 01 июня 2011

Вы можете поместить текст в JTextArea и вызвать setLineWrap(true) и setWrapStyleWord(true) на JTextArea. Если вы хотите, чтобы он выглядел более как JLabel-ish, просто измените настройки цвета JTextArea на свой вкус.

РЕДАКТИРОВАТЬ 1

Также еще одна вещь, которая может сработать: подумайте о том, чтобы владение JPanel использовало BorderLayout:

JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout

Так что JLabel добавит заполнит addPanel2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...