2014-12-05 4 views
0

다른 것들 중에서 탭이 여러 개있는 Java GUI를 빌드하려고합니다. 탭 중 하나에서 스크롤 가능한 JTextArea와 JTextArea와 상호 작용하는 상단/하단의 일부 버튼을 모두 갖고 싶습니다. 두 탭을 동일한 탭으로 가져 오는 방법을 알아낼 수 없습니다. 버튼과 스크롤 할 수없는 jtextarea 또는 스크롤 가능한 jtextarea를 얻는 중입니다. 나는 또한 다른 탭에 버튼을 표시하고 싶지 않습니다. 여기 내 코드는 다음과 같습니다.버튼과 스크롤 가능한 패널을 탭에 추가하기 - Java

private final JTextArea music = new JTextArea(); 
private final JTextArea button = new JTextArea(); 
private final JTextArea test = new JTextArea(); 
private final JTabbedPane tab = new JTabbedPane(); 
private JTable table; 

music.append(newPlaylist.toString()); 
JFrame frame = new JFrame("GUI"); 
frame.setTitle("Music File Organiser"); 

JPanel panel = new JPanel(); 
panel.setLayout(new FlowLayout(FlowLayout.CENTER)); 
JButton button1 = new JButton("Hello"); 
JButton button2 = new JButton("Sort by Album Title"); 
JButton button3 = new JButton("Sort by Track Title"); 

button1.addActionListener(new ActionListener() {code}; 
button2.addActionListener(new ActionListener() {code}; 
button3.addActionListener(new ActionListener() {code}; 

panel.add(music); 
panel.add(button1); 
panel.add(button2); 
panel.add(button3); 

JScrollPane scroll = new JScrollPane(panel); 
JScrollPane scroll2 = new JScrollPane(table); 

tab.add("Music Files", scroll); 
tab.add("Table", scroll2); 

this.add(tab); 
frame.setLocationRelativeTo(null); 
this.setSize(1200, 1000); 
this.setVisible(true); 
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

이 탭이 처음입니다. "스크롤"에 버튼을 추가하려면 어떻게합니까? 여기서 내가 시도하는 방식은 JTextArea "음악"을 패널에 추가 한 다음 동일한 패널에 단추를 추가 한 다음 패널을 JScrollPane에 추가 한 다음 탭에 JScrollPane을 추가하는 것입니다. 어떤 도움이라도 정말로 감사 할 것입니다.

답변

2

시각적 요소를 하위 패널로 캡슐화합니다.

JPanel buttonPanel = new JPanel(); //panel for buttons. 
buttonPanel.add(button1); 
buttonPanel.add(button2); 
buttonPanel.add(button3); 

JScrollPane scroll = new JScrollPane(music); //scrollable pane for JTextArea 

panel.add(buttonPanel); 
panel.add(scroll); //add sub-components to panel for tab 

/*here you would add some layout code to fit the panel and scroll into the associated spaces */ 

tab.add("Music Files", panel); //add panel to tab 
+0

어린이 패널은 매우 스마트하게 들립니다. 하지만 패널에 레이아웃 코드를 어떻게 추가 할 수 있습니까? 내 말은, 그것은 같은 패널입니다. 그래서 어떻게하면 buttonPanel이 맨 아래에 있고 스크롤하여 맨 아래에 머무르라고 말할 수 있습니까? – jogorm

+0

[LayoutManager 사용 방법] (https://docs.oracle.com/javase/tutorial/uiswing/layout/using.html) [WindowBuilder] (https : // eclipse)와 같은 GUI 디자인 도구를 사용할 수도 있습니다. org/windowbuilder /)를 사용하여 다시 컴파일하지 않고도 디자인을 볼 수 있습니다. – Compass

+0

매우 알고 있지만 WindowBuilder가 너무 쉽습니다. 이제 한 단계 더 나아가서 스크롤과 버튼을 모두 얻을 수 있지만 스크롤을 시작하자마자 버튼 패널이 사라집니다. – jogorm

0

이 같은 수행 할 수 있습니다 모든 시간을 내가 단추가 JScrollPane에 포함되지해야한다고 생각하기 때문에,

JPanel tab = new JPanel() 
    JPanel tabWithButtons = new JPanel() 
    JPanel tabWithScrollPanel = new JPanel() 

    tab.add(tabWithScrollPanel) 
    tab.add(tabWithButtons) 

이 IMO이 더 나은 방법을 그들은 볼 수 있어야합니다

물론 모든 요소를 ​​적절한 JPanels에 추가해야합니다.

또한 모든 요소가 포함 된 패널의 너비/높이 설정을 시도해 볼 수 있습니다. 아마도 ScrollArea 패널이 커야할까요?

관련 문제