2016-07-29 6 views
0

私は、合計4つのクラス、Main,Form1,Form2およびZBCを使用するJavaアプリケーションを作成しています。私はForm2にあるJTextAreaZBCクラスのいくつかのコードで追加しようとしています。別のクラスのjtextareaを追加する

JTextAreaを追加しようとしているJTextareastaticではないので、私はエラーを取得するときに最初の問題はある - 私はstaticJTextAreaを変更した場合、私は、エラーを取得します。

Form2.jtaConsole.append("TEST");を使用してテキストボックスを追加しようとしています。これは前回の方法と同じです。

このテキストエリアを別のクラスに追加する方法はありますか?

下記の各クラスのコードを掲載します。

ヘルプがあります。

Main.java

package com.company; 
public class Main 
{ 
    public static void main(String[] args) 
    { 
     Form1 f1 = new Form1(); 
     f1.open(); 
    } 
} 

Form1.java

package com.company; 
import javax.swing.*; 
public class Form1 
{ 
    //Declare GUI items 
    private JComboBox comboBox1; 
    private JButton goButton; 
    private JPanel jp_one; 

    public Form1() 
    { 
     comboBox1.addActionListener(e -> 
     { 
      Object selected **= comboBox1.getSelectedItem().toString(); 
     }); 

     goButton.addActionListener(e -> 
     { 
      Form2 f2 = new Form2(comboBox1.getSelectedItem().toString()); 
     }); 
    } 
    public static void open() 
    { 
     JFrame frame = new JFrame("Zebra Print"); 
     frame.setContentPane(new Form1().jp_one); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
     frame.setResizable(true); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
    } 
} 

Form2.java

package com.company; 
import javax.swing.*; 

class Form2 
{ 
    //Declare GUI items 
    public JTextArea jtaConsole; 
    public JPanel Jframer; 
    public JButton stopButton; 
    public JButton startButton; 
    String IP1 = "172.20.9.61"; 
    int PORT1 = 9100; 
    ZBC ZBC = new ZBC(); 
    Thread t1 = new Thread(ZBC); 

    public Form2(String message) 
    { 
     JFrame frame = new JFrame("Zebra Print"); 
     frame.setContentPane(this.Jframer); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setResizable(true); 
     frame.setVisible(true); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 

     jtaConsole.append("//////////// CONSOLE ////////////\n\n"); 
     jtaConsole.append("- User selected: " + message + "\n"); 
     jtaConsole.append("- IP: "+IP1+"\n"); 
     jtaConsole.append("- PORT: "+PORT1+"\n\n"); 

     startButton.addActionListener(e -> 
     { 
      jtaConsole.append("- Program is now running..\n\n"); 
      //Starts the ZBC class on a new thread 
      t1.start(); 
     }); 

     stopButton.addActionListener(e -> 
       jtaConsole.append("- Program is now paused..\n\n")); 
    } 
} 

ZBC.java

package com.company; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.Socket; 
import java.sql.*; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class ZBC implements Runnable 
{ 
@Override 
public void run() 
{ 
    while (true) 
    { 
     // Connect & Select SQL 
     String connectionString = "jdbc:sqlserver://:;database=;user=;password=;"; 
     String SQL = "SELECT [PK_PrintQueueID],[FK_PrinterID],[FK_BarcodeTypeID],[Barcode],[Quantity],[QueueDate],[ProcessedDate] FROM [X].[dbo].[PrintQueue] WHERE ProcessedDate IS NULL"; 
     Connection connection = null; 
     // Time & Date 
     DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date date = new Date(); 
     try 
     { 
      connection = DriverManager.getConnection(connectionString); 
      Statement stmt = connection.createStatement(); 
      Statement stmt2; 
      ResultSet rs = stmt.executeQuery(SQL); 
      while (rs.next()) 
      { 
       String FK_BarcodeTypeID = rs.getString("FK_BarcodeTypeID"); 
       String barcode = rs.getString("Barcode"); 
       String[] parts = barcode.split("-"); 
       String part1 = parts[0]; 
       String SQL2 = "UPDATE PrintQueue SET ProcessedDate = '" + dateFormat.format(date) + "' WHERE PK_PrintQueueID = '" + rs.getString("PK_PrintQueueID") + "'"; 
       stmt2 = connection.createStatement(); 
       stmt2.executeUpdate(SQL2); 

       if (FK_BarcodeTypeID.equals("1")) 
       { 
        // Type 128 barcode. 
        String zpl = "^XA^BY2,3,140^FT80,200^BCN,Y,N,N^FD>:" + rs.getString("Barcode") + "^FS^FT200,250^A0N,42,40^FH^FD" + part1 + "^FS^XZ"; 
        //printlabel(zpl); 
        System.out.println("New serialized barcode added.\nPrinting: " + (rs.getString("Barcode"))); 
        System.out.println("Process date: " + dateFormat.format(date) + ".\n"); 
        Form2.jtaConsole.append("TEST"); 

       } else 
       { 
        // Type 39 barcode. 
        String zpl = "CT~~CD,~CC^~CT~ ^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR4,4~SD15^JUS^LRN^CI0^XZ^XA^MMT^PW674^LL0376 ^LS0 ^BY2,3,151^FT84,249^BCN,,Y,N^FD>:" + rs.getString("Barcode") + "^FS ^PQ1,0,1,Y^XZ"; 
        //printlabel(zpl); 
        System.out.println("New un-serialized barcode added.\nPrinting: " + (rs.getString("Barcode"))); 
        System.out.println("Process date: " + dateFormat.format(date) + ".\n"); 
       } 
      } 
     } catch (SQLException e) 
     { 
      e.printStackTrace(); 
     } 
     try 
     { 
      Thread.sleep(3000); 
     } 
     catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
     System.out.println("Checking for new barcode.."); 
    } 
} 
public void printlabel(String zpl) 
{ 
    try 
    { 
     Socket clientSocket; 
     clientSocket = new Socket(IP,PORT); 
     DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
     outToServer.writeBytes(zpl); 
     clientSocket.close(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 
} 
+0

を参照してください[複数JFrames、グッド/バッドプラクティスの使用?](http://stackoverflow.com/q/9554636/418556) –

+0

@AndrewThompsonああ、[OK]を - のために、この – mrdarb

答えて

2

まず、あなたはZBCにForm2のオブジェクトを使用する必要があります。これを使用して行うことができます

t1.setForm2(this); 

クラスForm2から。 そして

private Form2 form2; 
public void setForm2(final Form2 obj){ 
    this.form2=obj; 
} 

like- setForm2は今、あなたはそこにオブジェクトを持っているようZBCでセッターを作成します。 これでよろしいですか?

form2.jtaConsole.append("TEST"); 
form2.jtaConsole.repaint(); 
form2.jtaConsole.revalidate(); 

これが役に立ったら教えてください。

+0

@Sursebduこんにちはに感謝、感謝help - t1.setForm2(これ)についてはどこで使うのですか? ZBC.javaで? – mrdarb

+0

これは、t1.start()の直後にForm2で行うことができます。 – Sirsendu

+0

私はこれを試しましたが、運がいいわけではありません。方法はフォーム2で解決できません。 – mrdarb

関連する問題