1
我在單擊按鈕上將面板添加到已顯示的JFrame中。現在,當用戶調整框架大小時,面板保持不變。我想要的是面板位置也應該隨着框架大小調整。任何方式來做到這一點?調整jpanel在jframe上的位置調整大小
代碼再生我的問題:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ProblemPanelLocation {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame = new JFrame("ProblemPanelLocation");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(250, 250);
final JPanel panel = new JPanel();
panel.setSize(100, 100);
panel.setBorder(BorderFactory.createBevelBorder(1));
final JButton button = new JButton("Add panel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel.setLocation(button.getX() - button.getWidth() - 10, button.getY());
frame.getLayeredPane().add(panel, JLayeredPane.MODAL_LAYER);
}
});
GroupLayout layout = new GroupLayout(frame.getContentPane());
frame.getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(317, Short.MAX_VALUE)
.addComponent(button)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(button)
.addContainerGap(266, Short.MAX_VALUE))
);
frame.setVisible(true);
}
});
}
}
場景:
- 起初,你看到它的按鈕的框架。
- 當你點擊它時,一個面板被添加到幀中,在幀的分層窗格中。
- 面板的位置根據按鈕位置計算。
- 現在,當您調整框架大小時,按鈕也會移動到框架的右側,但面板不會。
我想添加面板的方式,它的行爲就像按鈕的位置。可能嗎?如果是的話,我該怎麼辦?
你是用這個來顯示類似通知的東西嗎?因爲在這種情況下,你可以將一個彈出框關聯到按鈕 – 2012-07-20 11:47:52
@NitinChhajer。此面板還包含按鈕,onclick我必須在框架中執行一些操作。 – 2012-07-20 11:50:50
@mark:你使用'JLayeredPane'的具體原因是什麼?如果你的'JButton'在開始時出現在'JFrame'的'CENTER'處,並且當你按下它''JPanel'出現它是'LEFT'並且當你調整'JFrame'時它們都保留在' 'JFrame'的CENTER',這種行爲是否可以接受? – 2012-07-20 16:47:14