私はJava Swingの初心者です。次のコードについては混乱しています。固定幅のJScrollPane
私の目標は、2 JTextPaneの(s)はその中で垂直スクロールパネルを作るです。最初のJTextPaneは固定幅が親パネルの70%で、2番目のJTextPaneは固定幅が30%です。両方のJTextPaneは固定幅を持つため、垂直方向にのみテキストを展開します。
私はこの2つのJTextPaneに対して1つのスクロールバーしか持たないため、このソリューションを使用します。
私のinitコード:
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 616, 374);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(scrollPane);
JPanel panel = new JPanel();
scrollPane.setViewportView(panel);
SpringLayout sl_panel = new SpringLayout();
panel.setLayout(sl_panel);
JTextPane leftTextPane = new JTextPane();
sl_panel.putConstraint(SpringLayout.NORTH, leftTextPane, 10, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, leftTextPane, 10, SpringLayout.WEST, panel);
panel.add(leftTextPane);
JTextPane rightTextPane = new JTextPane();
sl_panel.putConstraint(SpringLayout.NORTH, rightTextPane, 10, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, rightTextPane, 10, SpringLayout.EAST, leftTextPane);
sl_panel.putConstraint(SpringLayout.EAST, rightTextPane, -10, SpringLayout.EAST, panel);
panel.add(rightTextPane);
scrollPane.addComponentListener(new ComponentAdapter()
{
public void componentResized(ComponentEvent evt) {
sl_panel.putConstraint(SpringLayout.EAST, leftTextPane, (int)(scrollPane.getWidth() * 0.7), SpringLayout.WEST, (Component)(evt.getSource()));
}
});
}
JTextPaneの(複数可)SOUTHには制約がないので、このように育つことができます。
問題:
- JTextPaneの(S)それらにいくつかのテキストを挿入した後にのみサイズ変更します。
- 垂直スクロールバーが機能していません。
これはおそらく役立ちます。私はちょうどそれをテストし、提供されたソリューションはJTextPaneでも動作します。あなたはちょっとそれを少し変更する必要がありますhttp://stackoverflow.com/questions/11178994/making-the-jtextarea-or-jeditorpane-in-a-jframe-scrollable – RubioRic
申し訳ありませんが、その例は1つのスクロールバーのためのものです。私の間違い。 – RubioRic
はい、ありがとうございます。 – user3102393