2013-02-06 64 views
0

我需要使用JTextPane作爲JTextField.我的JTextPane在文本到達邊界時轉到新行,但是我希望它繼續第一行而不會轉到下一行。 該怎麼辦?如何強制JTextPane不去下一行?

+6

我想你會發現[this](http://tips4java.wordpress.com/2009/01/25/no-wrap-text-pane/)有趣 – Reimeus

+0

@Reimeus太棒了! – Soheil

回答

1

有點髒,但雖然:

JTextPane textPane = new JTextPane() 
{ 
    @Override 
    public Dimension getPreferredSize() 
    { 
     Dimension size = super.getPreferredSize(); 
     size.width = 1000000; 
     return size; 
    } 

    @Override 
    public Dimension getMaximumSize() 
    { 
     Dimension size = super.getMaximumSize(); 
     size.width = 1000000; 
     return size; 
    } 

    @Override 
    public Dimension getPreferredScrollableViewportSize() 
    { 
     return super.getPreferredSize(); 
    } 

    @Override 
    public boolean getScrollableTracksViewportWidth() 
    { 
     return false; 
    } 
}; 

JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
frame.getContentPane().setLayout (new BorderLayout()); 
frame.getContentPane().add (
    new JScrollPane (textPane, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), BorderLayout.CENTER); 
frame.pack(); 
frame.setVisible (true); 

您還需要以某種方式阻止用戶進入換行符。

+3

他說'JTextPane'。 'JTextPane'沒有這個。 – Brian

+0

哦,對不起。固定。 –

+1

@MikhailVladimirov一個更簡單的方法就是這裏所說的:http://www.java2s.com/Code/Java/Swing-JFC/NonWrappingWrapTextPane.htm – Soheil