나는 JTextPane가 자연스럽게 텍스트 잘못
을 포장하지 않는 것으로 알고 있습니다. 디폴트에서는, JTextPane는 텍스트를 랩합니다.
아래 해결책을위한 토대가되는이 주제에 대한 자세한 내용은 Text Pane No Wrap을 확인하십시오.
getScrollableTrackViewportWidth()
메서드를 재정의해야합니다. 나는 그것이해야한다고 생각 :
이
JTextPane textPane = new JTextPane()
{
public boolean getScrollableTracksViewportWidth()
{
return getParent().getSize().width > 100;
}
};
편집 :
이 문제는 텍스트 창에서 텍스트 관련이있을 것으로 보인다.
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class TextPaneNoWrap
{
private static void createAndShowGUI()
{
JTextPane textPane = new JTextPane()
{
@Override
public boolean getScrollableTracksViewportWidth()
{
Dimension d = getParent().getSize();
System.out.println(d);
return false;
}
};
textPane.setText("one two three four five six\nthis wraps at 39");
// textPane.setText("import javax.swing.event.*;\nthis wraps at 111");
JFrame frame = new JFrame("TextPaneNoWrap");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JLabel("Some Component"), BorderLayout.LINE_START);
frame.add(new JScrollPane(textPane));
frame.setSize(300, 100);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(() -> createAndShowGUI());
/*
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
*/
}
}
Edit2가 : 그것은 차이의 원인이 텍스트 또는 텍스트의 비 알파벳 문자의 길이 있는지 알고하지 마십시오
는 "래퍼"패널을 사용하는 경우 확인을 작동하는 것 같다가
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class TextPaneNoWrap
{
private static void createAndShowGUI()
{
JTextPane textPane = new JTextPane();
// textPane.setText("one two three four five six\nthis wraps at 39");
textPane.setText("import javax.swing.event.*;\nthis wraps at 111");
JPanel wrapper = new NoWrapPanel(textPane);
JFrame frame = new JFrame("TextPaneNoWrap");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JLabel("Some Component"), BorderLayout.LINE_START);
frame.add(new JScrollPane(wrapper));
frame.setSize(300, 100);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
static class NoWrapPanel extends JPanel implements Scrollable
{
public NoWrapPanel(JComponent component)
{
setLayout(new BorderLayout());
add(component);
}
@Override
public Dimension getPreferredScrollableViewportSize()
{
return getPreferredSize();
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
{
return 20;
}
@Override
public boolean getScrollableTracksViewportHeight()
{
return true;
}
@Override
public boolean getScrollableTracksViewportWidth()
{
// return false;
return getParent().getSize().width > 100;
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
{
return 10;
}
}
public static void main(String[] args)
{
EventQueue.invokeLater(() -> createAndShowGUI());
/*
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
*/
}
}
paintComponent 메소드에서'if (this.getWidth> 100) ... '를 사용하십시오. – Nathan
그래서 TextPane에 ComponentListener를 추가하고 크기에 따라 줄 바꿈을 켜기/끄기로 전환하십시오. – StanislavL