1

JScrollPane 内に JTextArea があり、JPanel 内に配置され、JTabbedPane のタブ内に配置されます。

テキストが JTextArea に追加されることはわかっていますが、タブ間を移動すると、JTextArea が表示されません。テキストを読むには、JTextArea 内のテキストを選択する必要があります。これにより、JTextArea の背景色が白色になります。選択しないと何も見えません。

私はいつものことを試しましたが、うまくいきrevalidate();ませrepaint()ん。問題のコードの一部を次に示します。

public void writeLogEntry(Alarm alarm)
{


    String value = "Blah Blah Blah";
    logTextArea.append(value);
    SwingUtilities.getWindowAncestor(contentPane).revalidate();
    repaint();
    revalidate();
    setVisible(true);
}

JTextArea に関連する要素のコードは次のとおりです。

JPanel logPnl = new JPanel();
logPnl.setLayout(new BorderLayout(10, 10));
JScrollPane logScrollPane = new JScrollPane();
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
logTextArea = new JTextArea("blah blah");
logTextArea.setBounds(10, 10, 550, 300);
logTextArea.setEditable(false);
logScrollPane.add(logTextArea);
logPnl.add(logScrollPane);

contentTabs.addTab("Alarms Log", null, logPnl, "View Log");
contentPane.add(contentTabs);

私は何を間違っていますか?

4

1 に答える 1

5

スクロールペインにコンポーネントを直接追加するべきではありません。代わりに、コンポーネントをビューポートに追加します。または、スクロールペインを作成するときにコンポーネントを指定すると、コンポーネントがビューポートに追加されます。

//JScrollPane logScrollPane = new JScrollPane();
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//logTextArea = new JTextArea("blah blah");
logTextArea = new JTextArea(5, 40);
logTextArea.setText("some text");
//logTextArea.setBounds(10, 10, 550, 300);
logTextArea.setEditable(false);
JScrollPane logScrollPane = new JScrollPane(logTextArea);
于 2013-04-26T04:08:15.860 に答える