0

Java でチーム アプリケーションを作成します。JFrame に Rectangle と Circle の組み合わせであるロゴを追加しますが、アプリケーション 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);;
       }
       }
}
4

1 に答える 1

2

アプリケーションにロゴを追加した後 JTextArea が表示されない

理由は次の行です。

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

setBoundsSwing コンポーネントのレイアウトでは機能しません。したがって、logoインcontainerを追加するときJFrameは、それを中央に追加し、追加されたインを中央に隠しJTextAreaます。

于 2013-05-05T18:01:03.963 に答える