2
使用Java CardLayout時可以更改Jpanel的大小嗎?使用CardLayout更改JPanel的大小
使用Java CardLayout時可以更改Jpanel的大小嗎?使用CardLayout更改JPanel的大小
拍,像這樣在組件(這裏的JLabel,而不是一個JPanel)有它的首選大小設置,然後將其放置在使用適當的佈局,這裏的GridBagLayout與默認設置將圍繞組件另一個JPanel的,並使用JPanel添加GridBagLayout到CardLayout使用面板::
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.Border;
public class MultiSizedPanels {
private static void createAndShowUI() {
final CardLayout cardLayout = new CardLayout();
final JPanel cardHolder = new JPanel(cardLayout);
JLabel[] labels = {
new JLabel("Small Label", SwingConstants.CENTER),
new JLabel("Medium Label", SwingConstants.CENTER),
new JLabel("Large Label", SwingConstants.CENTER)};
for (int i = 0; i < labels.length; i++) {
int padding = 50;
Dimension size = labels[i].getPreferredSize();
size = new Dimension(size.width + 2 * (i + 1) * padding, size.height + 2 * (i + 1) * padding);
labels[i].setPreferredSize(size);
Border lineBorder = BorderFactory.createLineBorder(Color.blue);
labels[i].setBorder(lineBorder);
JPanel containerPanel = new JPanel(new GridBagLayout());
containerPanel.add(labels[i]);
cardHolder.add(containerPanel, String.valueOf(i));
}
JButton nextButton = new JButton("Next");
nextButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cardLayout.next(cardHolder);
}
});
JPanel btnHolder = new JPanel();
btnHolder.add(nextButton);
JFrame frame = new JFrame("MultiSizedPanels");
frame.getContentPane().add(cardHolder, BorderLayout.CENTER);
frame.getContentPane().add(btnHolder, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
是的,這是可能的。例如,您可以嵌套您的JPanel。如果你想在答案中提供更多的細節,你可能需要對你的問題做同樣的處理。 – 2011-03-24 03:19:09
@Hovercraft全鰻魚,好吧,我加入了3個不同的JPanels到CardLayout,但我希望他們能夠顯示爲不同的大小,我一直在使用的setSize()嘗試,但它不工作,我不知道還有什麼嘗試。 – Neutralise 2011-03-24 03:43:06
考慮嵌套它們與使用另一種佈局,諸如的FlowLayout其他面板的其它面板的內部,然後交換容器板。並且不要在大多數佈局管理器中使用setSize。而是使用setPreferredSize。 – 2011-03-24 03:54:07