我有一個簡單的swing應用程序,它由一個JLabel和三個按鈕組成。這三個按鈕與JLabel一起位於JFrame中的JPanel中。 JPanel使用flowlayout管理器水平排列按鈕,JFrame使用BorderLayout管理器垂直排列JLabel和JPanel。如何讓JFrame自動調整大小以顯示所有按鈕
我的問題是當我啓動應用程序時,在使用過程中,其中一個按鈕的文本更改增加其寬度。但是,該窗口不會調整大小以適應此並且其中一個按鈕消失。我想過再次調用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);
+1,cool!我今天學習一種新方法。在過去,我建議SwingUtilities.windowForComponent(...)。 – camickr 2010-11-24 20:12:11