从另一个类追加jtextarea [英] Append jtextarea from another class

查看:77
本文介绍了从另一个类追加jtextarea的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作一个Java应用程序,该应用程序总共使用4个类,分别为MainForm1Form2ZBC.我试图通过ZBC类中的某些代码来附加Form2上的JTextArea.

I am making a java application which uses a total of 4 classes, Main, Form1, Form2 and ZBC. I am trying to append the JTextArea that is on Form2 through some code in the ZBC class.

第一个问题是尝试附加JTextArea时出现错误,因为JTextarea不是static-如果将JTextArea更改为static,我也会收到错误.

The first problem is when trying to append the JTextArea I get an error because the JTextarea is not static - I also get an error if I change the JTextArea to static.

我正在尝试使用Form2.jtaConsole.append("TEST");附加文本框,因为这是我之前所做的方式.

I am trying to append the textbox using Form2.jtaConsole.append("TEST"); as this is how i've done it previously.

有什么办法可以从另一个班级追加这个文本区域吗?

is there any way I can append this text area from another class?

我将在下面的每个班级发布代码;

I will post the code from each class below;

任何需要帮助的人!

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();
    }
}
}

推荐答案

首先,您需要在ZBC中使用Form2对象.您可以使用

First, you need to use Form2 object in ZBC. which you can do by using

t1.setForm2(this);

来自Form2类. 并以setForm2 like-

from class Form2. And create a setter at ZBC as setForm2 like-

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

现在您在那儿有物体. 现在,您可以

Now you have the object there. Now you do,

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

请告诉我这是否有帮助.

Please let me know if this helps.

这篇关于从另一个类追加jtextarea的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆