1

Swing を使い始めたばかりで、ヌル レイアウトを選択しました。これは、私が Flash の世界から来て、すべてのピクセルとサイズを指定することに慣れているためです。レイアウトについては後述します。

現在の問題は、JScrollPane のビューである JTextArea が、プログラムを実行する時間の半分しか表示されないことです。そこにないため、選択したり入力したりできません。ただし、ペインは常に 100% 表示されます。タブを数回押すと、テキスト領域にフォーカスが置かれ、表示されます。

問題とは関係のないコードの大部分を削除しました。そのため、一部のコードは MenuItemSelected のように奇妙に見えます。

PathsPanel のコンストラクターの最後に非常に多くの再描画があります。これは、この問題を修正するための「最後の溝」の努力だったからです。

また、再描画の上の setText をコメント アウトすると、テキスト領域が表示される頻度がさらに低くなります。

デイプランナー

public DayPlanner () {
    //win is a JFrame
    win.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
    win.setLayout (null);
    win.setResizable (false);
    win.setVisible (true);

    MenuItemSelected ("Paths");
    win.repaint ();
}

public void MenuItemSelected (String command) {
    ChangePanel (PathsPanel.class, pathsPanel);
}

private void ChangePanel (Class panelClass, Component ref) {
        activePanel = new PathsPanel (this);
        pathsPanel = (PathsPanel) activePanel;

        win.add (activePanel);
        win.repaint ();
    }
}

パスパネル

public PathsPanel (DayPlanner parent) {
    //extends JPanel
    this.parent = parent;

    setLayout (null);
    setBounds (0, 0, 500, 500);

    txtMessages = new JTextArea ();
    txtMessages.setOpaque (true);
    txtMessages.setBackground (Color.RED);

    JScrollPane scpMessage = new JScrollPane (txtMessages, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scpMessage.setBounds (0, 0, 500, 500);

    txtMessages.setText ("AWD");
    txtMessages.repaint ();
    scpMessage.repaint ();
    repaint ();
}

これは、LayoutManager を使用していないことに関係があるに違いありません。

4

0 に答える 0