JTextArea not show



我用java创建了一个团队应用程序。我在JFrame中添加了一个矩形和圆形的组合徽标,但在应用程序JTextArea中添加徽标后,没有显示。。。还添加了未显示的新玩家。。。

这是我的密码。

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

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

原因是这行:

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

setBounds不适用于Swing组件的布局。因此,当你在JFramecontainer中添加logo时,它就是将其添加到中心,隐藏在中心添加的JTextArea

相关内容

  • 没有找到相关文章

最新更新