2016-04-01 5 views
4

私はGUIを作成しました。いくつかのボタンがあります。私はそれらの下にオブジェクトのようなコンソールを追加して、ユーザーがそれらを見ることができるようにメッセージを書くことができるようにしたいと思います。 私はどの要素/オブジェクト/クラスを使用すべきですか?私はそれが異なる行にメッセージを表示できるようにしたい。ここ は、GUIを作成するための私のコードです:GUIにウィンドウのような "コンソール"を追加するには?

public ssGUI() { 
    setLayout(new BorderLayout()); 

    bRunNoAdj = new JButton("Run no adjustment"); 
    bRunNoAdj.setVerticalTextPosition(AbstractButton.CENTER); 
    bRunNoAdj.setHorizontalTextPosition(AbstractButton.LEADING); 
    bRunNoAdj.setMnemonic(KeyEvent.VK_E); 
    bRunNoAdj.addActionListener(this); 
    bRunNoAdj.setEnabled(false); 
    bRunNoAdj.setBackground(Color.white); 

    bRunAdj = new JButton("Run adjustment"); 
    bRunAdj.setVerticalTextPosition(AbstractButton.CENTER); 
    bRunAdj.setHorizontalTextPosition(AbstractButton.LEADING); 
    bRunAdj.setMnemonic(KeyEvent.VK_E); 
    bRunAdj.addActionListener(this); 
    bRunAdj.setEnabled(false); 
    bRunAdj.setBackground(Color.white); 

    bConnect = new JButton("Connect"); 
    bConnect.setMnemonic(KeyEvent.VK_E); 
    bConnect.addActionListener(this); 
    bConnect.setEnabled(true); 
    bConnect.setBackground(Color.white); 

    bDisconnect = new JButton("Disconnect"); 
    bDisconnect.setMnemonic(KeyEvent.VK_E); 
    bDisconnect.addActionListener(this); 
    bDisconnect.setEnabled(false); 
    bDisconnect.setBackground(Color.white); 

    bStationary = new JButton("Show Stationary"); 
    bStationary.setMnemonic(KeyEvent.VK_E); 
    bStationary.addActionListener(this); 
    bStationary.setEnabled(false); 
    bStationary.setBackground(Color.white); 

    bMoving = new JButton("Show Moving"); 
    bMoving.setMnemonic(KeyEvent.VK_E); 
    bMoving.addActionListener(this); 
    bMoving.setEnabled(false); 
    bMoving.setBackground(Color.white); 

    JPanel topPanel = new JPanel(); 
    topPanel.add(bConnect); 
    topPanel.add(bDisconnect); 
    add(topPanel, BorderLayout.NORTH); 
    JPanel centerPanel = new JPanel(); 
    centerPanel.add(bRunNoAdj); 
    centerPanel.add(bRunAdj); 
    add(centerPanel, BorderLayout.CENTER); 
    JPanel bottomPanel = new JPanel(); 
    bottomPanel.add(bStationary); 
    bottomPanel.add(bMoving); 
    add(bottomPanel, BorderLayout.SOUTH); 
} 

任意の助けをいただければ幸いです、ありがとうございました。

+2

だと思います。 – BadCash

+0

なぜ私はそれを偽にするべきですか? –

+3

@DanyLavrovこれをfalseに設定しないと、ユーザーは追加したメッセージを削除または変更できます。 – Roan

答えて

6

最も簡単なのはおそらくJTextAreaを使用することでしょう。

JTextArea area = new JTextArea(); 
area.setEditable(false); 

をそして、あなたは、ユーザーがエリアをスクロールできるようにしたい場合は、次のようにJScrollPaneに追加することができます:あなたがofcourseのエリアを編集することからユーザーを防止するであろう

が、これは次のように行うことができますこの:

JTextArea area = new JTextArea(); 
JScrollPane scrollableArea = new JScrollPane(area); 

そして最後に、あなたが行うことで地域に行を追加することができます。

area.setText(area.getText() + "\n" + newLine); 

又は好ましく:

area.append("\n" + newLine); 

私はこれが役に立てば幸い:)

+0

ありがとう。最後に一つだけ。最初の負荷では、メインフレーム内のすべてのコンポーネントが一緒に圧縮されます。なぜこうなった?私は 'setSize()'メソッドを使用しようとしていますが、それは役に立ちません。 –

+0

どうやって一緒に絞ったのですか?ところで、レイアウトマネージャを使用している場合、 'setSize()'は通常layoutmanagerで計算されるので無視されますが、 'setPreferredSize()'はいくつかのレイアウトマネージャによって使用されます。 – Roan

+0

ボタンのいくつかはお互いの上にあります。それは大したことじゃないよ。たとえば、スクロールパネルに最初のローディング時に1行しかない場合は、最初から3行幅にすることはできますか? –

5

JTextAreaを使用してください。 text_area.setEditable(false);を呼び出して読み取り専用にします。

+0

なぜそれが偽であるべきですか? –

+2

"console"は出力専用ウィンドウです。 'setEditable(false)'は、コントロールを読み取り専用にします。ユーザーは、プログラムが表示したメッセージを変更できないはずです。もちろん、あなたのプログラムはもっと多くの行を追加することができます。ありがとう。 – AJNeufeld

0

私が何を意味するあなたはそれに `` JTextArea`と `setEditable(false)を使用することができJTextAreaのか、JTextFieldの