JLabel と 3 つのボタンで構成される単純なスイング アプリケーションがあります。3 つのボタンは、JFrame と JLabel にある独自の JPanel にあります。JPanel はフローレイアウト マネージャーを使用してボタンを水平方向に配置し、JFrame は BorderLayout マネージャーを使用して JLabel と JPanel を垂直方向に配置します。
私の問題は、アプリケーションを起動したときに、使用中にボタンの 1 つのテキストが変更され、幅が大きくなることです。ただし、ウィンドウはこれに合わせてサイズ変更されず、ボタンの 1 つが消えます。pack() を再度呼び出すことも考えましたが、JFrame はコンストラクターのローカル変数です。また、プログラムにサイズ変更を指示する必要はありませんよね? 私はグーグルやここで私を助けるために何かを見つけることができませんでしたが、簡単な解決策があるに違いありません.何が欠けていますか? コードは以下です。
playButton = new JButton("Play");
pauseButton = new JButton("Pause");
stopButton = new JButton("Stop");
curTrackLabel = new JLabel("No Track Selected");
JFrame myFrame = new JFrame("MediaPlayer");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setTitle("MediaPlayer");
myFrame.setLocation(400,300);
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
myFrame.add(topPanel);
JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(playButton);
buttonPanel.add(pauseButton);
buttonPanel.add(stopButton);
topPanel.add(buttonPanel, BorderLayout.CENTER);
topPanel.add(curTrackLabel, BorderLayout.NORTH);
playButton.addActionListener(new playButtonHandler());
pauseButton.addActionListener(new pauseButtonHandler());
stopButton.addActionListener(new stopButtonHandler());
myFrame.pack();
myFrame.setVisible(true);