2013-09-30 70 views
0

你好我正在嘗試做一個遊戲,我想要做的基本事情是添加一個滾動條的JTextArea。這是我的代碼:當我運行它讓滾動條在絕對定位上工作

package TestStuff; 

import javax.swing.*; 

@SuppressWarnings("serial") 
public class JTextAreaTest extends JFrame 
{ 
    public static void main(String[] args) 
    { 
      new JTextAreaTest(); 
    } 

    public JTextAreaTest() 
    { 
      this.setSize(1500, 600); 
      setDefaultCloseOperation(
       JFrame.EXIT_ON_CLOSE); 
      this.setLocation(450, 175); 
      this.setExtendedState(JFrame. 
MAXIMIZED_BOTH); 
      this.setTitle("Game Display Test"); 

      panel1 = new JPanel(null); 

      final JTextArea gameDisplay = new JTextArea(
       500, 300); 
      gameDisplay.setBounds(424, 300, 500, 300); 
      gameDisplay.setBackground(Color.BLACK); 

      Font font = new Font ("Verdana", Font.BOLD, 
       14); 
      gameDisplay.setFont(font); 
      gameDisplay.setForeground(Color.WHITE); 

      final JScrollPane displayScroll = new JScrollPane(
       gameDisplay); 
      displayScroll.setHorizontalScrollBarPolicy(
       JScrollPane.HORIZONTAL_SCROLLBAR_AS_ 
        NEEDED); 
      displayScroll.setVerticalScrollBarPolicy(
       JScrollPane. 
       VERTICAL_SCROLLBAR_AS_NEEDED); 

      panel1.add(gameDisplay); 
      panel1.add(displayScroll); 

      setContentPane(panel1); 

      this.setVisible(true); 
    } 
} 

一切可行的罰款,但是當文本失控的JTextArea中的邊界,滾動條不會出現!是的,我知道我使用絕對定位(沒有佈局),這很糟糕,但我需要它在我的遊戲中的其他原因。提前致謝! (也因爲某些原因,我無法在我的電腦上連接到這個網站,但之前我已經使用過你們,你們真棒,所以我必須在我的手機上輸入這個。很抱歉,如果問題的佈局搞砸了,它的電話:P)

+0

是的......所有的地方,其間隔我沒有空間。大聲笑我不是一個編碼器凌亂。 –

+0

不要做任何手動調整大小/定位 - 這是您可以使用的LayoutManager的獨佔任務**始終**(簡單地查找或實施一個適合您需求的任務) – kleopatra

回答

2

當你打電話......

panel1.add(gameDisplay); 
panel1.add(displayScroll); 

您有效的gameDisplaydisplayScroll移除,作爲一個組件只能有一個父。

,它的作品,因爲它確實可以歸結爲一個事實,即你與位置和gameDisplay面板代替displayScroll,你應該是大小玩弄的事實...

使用

panel1.add(displayScroll); 

相反,但要確保你的大小和位置只有displayScroll,如displayScroll將採取的gameDisplay

0

我有照顧一個類似的問題,並且解決方案是在滾動條內部的組件上設置了setPreferredSize。我試圖絕對定位滾動條內的東西。幸運的是,我確切地知道尺寸應該是多少。也許這是一個特例。

final JFrame frame = new JFrame("HelloWorldSwing"); 
final JPanel panel = new JPanel(); 
panel.setPreferredSize(PUT SIZE HERE); 
panel.setLayout(null); 
final JScrollPane scrollPane = new JScrollPane(panel); 
frame.getContentPane().add(scrollPane);