简体   繁体   English

JTextArea没有显示

[英]JTextArea not show

I create an Team application in java. 我在java中创建了一个Team应用程序。 I add a logo which is the combination of Rectangle and Circle in JFrame but after add logo in application JTextArea not shown... Also adding new player not shown... 我在JFrame中添加了一个标志,它是Rectangle和Circle的组合,但是在应用程序JTextArea中添加了logo后没有显示...还添加了未显示的新播放器......

Here is my code. 这是我的代码。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;


public class MainGUI extends JFrame 
{
private JLabel teamName;
private JLabel playerCount;
private JLabel maxPlayer;

private JButton createTeam;
private JButton addOnePlayer;
private JButton addRemining;
private JButton exit;

private Team team;
private boolean teamCreated;

private JTextArea text;
Logo logo;
public static void main(String[] args) 
{

   new MainGUI();

}

public MainGUI()
{
        super.setTitle("Team manager");
        super.setSize(500,400);
        super.setLocation(150,150);
        super.setLayout(new BorderLayout());

        add(addTopPanel(), BorderLayout.NORTH);
        add(textArea(), BorderLayout.CENTER);
        add(buttonPanel(), BorderLayout.SOUTH);
        Logo logo = new Logo();
       logo.setBounds(100, 100, 150,150);
       getContentPane().add(logo);
       //  logo.addSquare(10, 10, 100, 100);

        super.setVisible(true);
        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private JPanel buttonPanel()
{
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new GridLayout(2,2));
    createTeam  = new JButton("Create Team");
    addOnePlayer = new JButton("Add one player");
    addRemining = new JButton("Add remaining players");
    exit = new JButton("Exit");

    buttonPanel.add(createTeam);
    buttonPanel.add(addOnePlayer);
    buttonPanel.add(addRemining);
    buttonPanel.add(exit);

    createTeam.addActionListener(new ActionListener()
    {
    @Override
        public void actionPerformed(ActionEvent e) 
        {
          if(!teamCreated)
          {
              teamCreated = true;
              team = new Team();
              teamName.setText("Team name: "+team.getName());
              playerCount.setText("Players count: "+team.getCount());
              maxPlayer.setText("Max team size: "+team.getSize());
          }
          else
          {
              JOptionPane.showMessageDialog(null,"The team has been already created, and no further Team instances are instantiated");
          }

        }
    });

    addOnePlayer.addActionListener(new ActionListener()
    {
      @Override
        public void actionPerformed(ActionEvent e) 
        {
          if(team != null)
          {
              Player pl = Team.createPlayer();
              team.addPlayer(pl);
              playerCount.setText("Players count: "+team.getCount());
              text.setText(team.toString());
          }
          else
          {
              JOptionPane.showMessageDialog(null,"Create a team first ");
          }
        }
    });

    addRemining.addActionListener(new ActionListener()
    {
      @Override
        public void actionPerformed(ActionEvent e) 
        {
          if(team != null)
          {
              team.addPlayers();
              playerCount.setText("Players count: "+team.getCount());
              text.setText(team.toString());
          }
          else
          {
              JOptionPane.showMessageDialog(null,"Create a team first ");
          }
        }
    });

    exit.addActionListener(new ActionListener()
    {
      @Override
        public void actionPerformed(ActionEvent e) 
        {
          System.exit(1);
        }
    });

    return buttonPanel;

}

private JTextArea textArea() 
{
    text = new JTextArea();

    return text;
}

private JPanel addTopPanel() 
{
    JPanel top = new JPanel();
    top.setLayout(new GridLayout(1,3));

    teamName = new JLabel("Team name: ");
    playerCount = new JLabel("Players count: ");
    maxPlayer  = new JLabel("Max team size: ");

    top.add(teamName);
    top.add(playerCount);
    top.add(maxPlayer);

    return top;
}
class Logo extends JPanel {
       /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
       protected void paintComponent(Graphics g) {
          super.paintComponent(g);


          g.setColor(Color.orange);  
          g.drawRect(350,80,70,70);

          g.setColor(Color.blue);
          g.drawRoundRect(360, 30, 50, 50, 50, 50);;
       }
       }
}

after add logo in application JTextArea not shown 在应用程序JTextArea中添加徽标后未显示

Reason is this Line: 原因是这条线:

  logo.setBounds(100, 100, 150,150);
  getContentPane().add(logo);

setBounds wont work with the layouts of Swing components. setBounds使用Swing组件的布局。 So when you are adding the logo in container of JFrame it is adding it to the center , hiding out the JTextArea added in center. 因此,当您在JFrame container中添加logo时,它会将其添加到中心,隐藏在中心添加的JTextArea

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM