如何在同一个jpanel中使用textarea和图形?

时间:2014-05-20 18:50:38

标签: java graphics

我有两个类一个用于图形,一个用于通过文本使用textarea进行用户输入。当我在同一个包中运行它们时,只有其中一个运行,我怎么能一起运行,以便图形将与用户输入一起运行。

这是图形

package pack;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class gui extends JPanel implements Runnable{ 

    Thread t = new Thread(this);
    input inputObject = new input();
    public int x;
    public int y;

    public static void main(String args[])
    {
        new gui();
    }

    public gui()
    {

        JFrame f = new JFrame();
        System.out.println("::");
        f.setTitle("Basic window");
            f.setSize(500, 500);
        f.setLocationRelativeTo(null);
        f.add(this);
        f.setVisible(true);
        f.setFocusable(true);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        t.start(); System.out.println(":::");
    }

    public void run()
    {
        while(true)
        {
            try
            {
                t.sleep(10);
            }
            catch(Exception e){}

            x++;
            y++;

            repaint();
        }
    }

    public void paint (Graphics g)
    {
        System.out.println(":D");

        g.setColor(Color.red);

        g.drawString("hi",x,y);
    }
}

这是文字

package pack;

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

public class input extends JPanel implements ActionListener {

 protected JTextField textField;
    protected JTextArea textArea;
    private final static String newline = "\n";

    public input()
    {
        super(new GridBagLayout());

        textField = new JTextField(20);
        textField.addActionListener(this);

        textArea = new JTextArea(5, 20);
        textArea.setEditable(false);
        JScrollPane scrollPane = new JScrollPane(textArea);


        GridBagConstraints c = new GridBagConstraints();
        c.gridwidth = GridBagConstraints.REMAINDER;

        c.fill = GridBagConstraints.HORIZONTAL;
        add(textField, c);

        c.fill = GridBagConstraints.BOTH;
        c.weightx = 1.0;
        c.weighty = 1.0;
        add(scrollPane, c);
    }
    public void actionPerformed(ActionEvent evt) {
        String text = textField.getText();
        textArea.append(text + newline);
        textField.selectAll();


        textArea.setCaretPosition(textArea.getDocument().getLength());
    }

    private static void createAndShowGUI() {

        JFrame frame = new JFrame("TextDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        frame.add(new input());


        frame.pack();
        frame.setVisible(true);
    }

    public static void main (String[] args) {

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

}

1 个答案:

答案 0 :(得分:0)

如果要向gui添加输入,请在gui构造函数中创建另一个类的实例并将其添加到gui

// in gui()
input my_input = new input();
add(my_input);

提示:班级名称应以大写字母开头。 tip2:你应该在一个类中只有main方法,并为其添加其他类。

如果您了解或需要更多帮助,请告诉我。