0

I create an Team application in java. 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...

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

1 回答 1

2

在应用程序 JTextArea 添加徽标后未显示

原因是这条线:

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

setBounds不适用于 Swing 组件的布局。因此,当您添加其中的logo内容时containerJFrame会将其添加到中心,隐藏JTextArea添加的中心。

于 2013-05-05T18:01:03.963 回答