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 を使用していないことに関係があるに違いありません。