1

残念ながら、メイン プログラム ウィンドウ (オブジェクト g) で段階的な出力を行うことはできません。

メインクラスの一部:

/* Create a main window  of GUI*/  
    Gui g = new Gui();        
    g.showitself(); /*object is shown on the screen*/

    /*Check folder existing*/
    boolean inOutFilesFolderExists = (new File(vars.diskLetter+"//"+vars.ppmRootFolder+"//"+vars.inOutFilesFolder).exists());
         if (inOutFilesFolderExists)
            {
             System.out.println("Folder exists."); /*it is just for understanding if-operator works*/
             String textMessage = "\n"+"Folder " + vars.diskLetter+"//"+vars.ppmRootFolder+"//"+vars.inOutFilesFolder + "exists."+"\n" ; /*the message that I want to show in the main screen*/
             g.printmessage(logCurDateTime, textMessage); /*I am trying to show textMessage in the main GUI window by this method - g.printmessage  */
             }
         else
             { System.out.println("Folder doesn’t exists.");
            String textMessage = "Folder " + vars.diskLetter+"//"+vars.ppmRootFolder+"//"+vars.inOutFilesFolder + " doesn’t exist and will be created." ;
             g.printmessage(logCurDateTime, textMessage);
             new File(vars.diskLetter+"//"+vars.ppmRootFolder+"//"+vars.inOutFilesFolder).mkdirs();
             }
/** Now I am trying to create a new text message that should follow after previous text message */
            String textMessage = "Hello, Java Log.";
           // get to g object variables for showing 
            g.printmessage(logCurDateTime,  textMessage);

GUI クラス:

        public class Gui {
                        Border solidBorder = BorderFactory.createLineBorder(Color.GRAY, 6);
                        Font font = new Font("Verdana", Font.PLAIN, 12);
                       //method which shows the main window of GUI
                        JFrame main_Window = new JFrame("PPM v.2.0");
                        public void showitself ()
                       {
                            main_Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                            main_Window.setSize(800, 400);
                            main_Window.setVisible(true);
                       }
                        /*This method should show messages from main class */
                        void printmessage (String logCurDateTime, String textMessage)
                       {
                       JLabel label = new JLabel("      " + logCurDateTime + " - " + textMessage +"\n");
                        main_Window.getContentPane().add(label);
                        }
        }

その結果、最後のメッセージ「Hello, Java Log.」のみを含む GUI メイン画面が表示されます。私が理解しているように、前のメッセージが次のメッセージによって書き換えられることを意味しますが、次のようなメッセージのシリアル出力 (メッセージごとのメッセージ) が必要です。

logCurDateTime - フォルダーが存在します。(またはフォルダが存在しないため、作成されます。)

logCurDateTime - 「こんにちは、Java ログ。」

また、(eclipse.swtライブラリを使用して)printmessageメソッドを次のように再コーディングしようとしています

void printmessage (String logCurDateTime, String textMessage)
             {

             JTextArea mainTextArea = new JTextArea();
             mainTextArea.append(logCurDateTime + textMessage +"/n");
             }

しかし、それは役に立ちません (メッセージはまったくありません)。

メインクラスからのメッセージを1つずつ表示するコードを作成するには?

4

3 に答える 3

4

printmessageメソッドは の新しいインスタンスを作成していJTextAreaますが、そのインスタンスをコンテナに追加していません。initComponents()コンストラクターまたはメソッドで、テキスト領域をインスタンス化して一度追加する必要があるようです。

于 2012-08-13T05:42:23.717 に答える
3

デフォルトでは、コンテンツ ペインのレイアウトは BorderLayout です。GridLayout または BoxLayout に置き換えることができます。

// a GridLayout
main_Window.getContentPane().setLayout(new GridLayout(0, 1));
// or a BoxLayout
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
main_Window.setContentPane(panel);

GridBagLayout も可能なオプションです。

于 2012-08-13T10:35:31.180 に答える
0

みんなありがとう!このクラスは、フレーム内のメッセージごとにメッセージを表示します。

public class Gui {
    Border solidBorder = BorderFactory.createLineBorder(Color.GRAY, 6);
    Font font = new Font("Verdana", Font.PLAIN, 12);


    JFrame main_Window = new JFrame("PPM v.2.0");
    JTextArea mainTextArea = new JTextArea(5, 200);

    public void showitself ()
    {

            main_Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            main_Window.setSize(800, 400);
            main_Window.setVisible(true);
            main_Window.add(mainTextArea);


    }


    public void printMessage(final String textMessage) {
        if (EventQueue.isDispatchThread()) {
            appendMessage(textMessage);
        } else {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    appendMessage(textMessage);
                }
            });
        }
    }

    private void appendMessage(String message) {
        mainTextArea.append(message);
        mainTextArea.append("\n");
    }

}
于 2012-08-15T11:16:01.350 に答える