2015-08-09 4 views
1

Моя программа должна иметь JTextArea со свитком внутри JTabbedPane и JTabbedPane содержится в пределах JPanel. Ниже приведен фрагмент кода, который я тестировал.Как использовать JTabbedPane внутри JPanel?

private JTabbedPane jtab; 
private JScrollPane jsp; 
private JTextArea jtxta; 

jtab = new JTabbedPane(); 
jtxta = new JTextArea(); 
jsp = new JScrollPane(jtxta); 

jtab.addTab("[Untitle]", jsp); 
main_jpn.add(jtab); 

getContentPane().add(main_jpn, BorderLayout.CENTER); 

Но при запуске программы ничего не отображается. Что нужно в моей программе?

+0

Чтобы лучше помочь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –

+0

'getContentPane(). Add (main_jpn, BorderLayout.CENTER);' вызов 'getContentPane()' был довольно непростым в течение некоторого времени (Java 1.5?). Также рекомендуется не распространять 'JFrame' вообще. Просто используйте экземпляр одного. –

ответ

1

Я написал пример для вас

import java.awt.BorderLayout; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextArea; 

public class Solution extends JFrame { 

private static final long serialVersionUID = 1L; 
private JTabbedPane jtab; 
private JScrollPane jsp; 
private JTextArea jtxta; 

public Solution() { 
    jtab = new JTabbedPane(); 
    jtxta = new JTextArea(); 
    jsp = new JScrollPane(jtxta); 
    jtab.addTab("[Untitle]", jsp); 
    jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
    getContentPane().add(jtab, BorderLayout.CENTER); 
    this.setSize(300,400); 
    this.pack(); 
    this.setVisible(true); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 
    new Solution(); 
} 
} 

Результат показан ниже

enter image description here

самое главное, вам необходимо установить политику прокрутки, держа свиток всегда показывает.

+0

1) На EDT следует запустить графический интерфейс Swing и AWT. 2) Лучше, чем 'this.setSize (300,400);', предложите размер в строках и столбцах в конструкторе 'JTextArea' и' pack() 'перед тем, как установить его видимым. 3) Я сомневаюсь, что это имеет много, если вообще что-то, что касается области прокрутки. 4) Хороший снимок экрана. :) –

+0

'this.setSize (300 400); this.pack(); 'O_o Вы попробовали? Должно быть, насколько я могу судить, уменьшите рамку до маленькой снова. Если упаковка кадра (и да, мы должны), размер должен быть предложен компонентами (и границами), что лучше всего сделать (в этом case), указав столбцы и строки для текстовой области. –

+0

Спасибо за ответы. Моя программа снова работает. – CRagon

0

Обязательно установите макет main_jpn и родительский компонент в BorderLayout.

JPanel main_jpn = new JPanel(new BorderLayout()); 
    setLayout(new BorderLayout()); 
Смежные вопросы