私はJLabelと3つのボタンで構成される単純なスイングアプリケーションを持っています。 3つのボタンは、JLabelとともにJFrame内にある独自のJPanelにあります。 JPanelはflowlayoutマネージャを使用してボタンを水平に配置し、JFrameはBorderLayoutマネージャを使用してJLabelとJPanelを垂直に配置します。すべてのボタンを表示するためにJFrameのサイズを自動的に変更するにはどうすればいいですか?
私の問題は、私がアプリケーションを起動すると、使用中にボタンの1つのテキストが変化し、その幅が大きくなります。ただし、これに合わせてウィンドウのサイズが変更されず、ボタンの1つが消えます。私はpack()をもう一度呼び出すことを考えましたが、JFrameはコンストラクタ内のローカル変数です。また、プログラムのサイズを変更する必要はありません。私はGoogleやここで私を助けるために何かを見つけることができていないが、単純な解決策がなければならない、何が私は行方不明ですか?コードは以下のとおりです。
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);
+1、クール!私は今日新しい方法を学びます。過去に私はSwingUtilities.windowForComponent(...)を提案しました。 – camickr
これはうまくいくようですが、うまくいきました:) – CalumMcCall