私は、複数のJFramesの代わりにCardLayoutを使用する方法を学びたいと思っています。私はyoutubeで見つけたこのコードを使いこなしています。私はすべてのJPanes上でsetSize()を呼び出そうとしましたが、サイズを変更せず、最小ウィンドウサイズのままです。私はこのコード行のためにサイズを設定できないのですか? "panelCont.setLayout(cl);" ?JFrameのサイズを最小ウィンドウサイズから変更するにはどうすればよいですか?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CLayout {
JFrame frame = new JFrame("CardLayout");
JPanel panelCont = new JPanel();
JPanel panelFirst = new JPanel();
JPanel panelSecond = new JPanel();
JButton buttonOne = new JButton("Switch to second panel");
JButton buttonSecond = new JButton("Switch to first panel");
CardLayout cl = new CardLayout();
public CLayout() {
panelCont.setLayout(cl);
panelFirst.add(buttonOne);
panelSecond.add(buttonSecond);
panelFirst.setBackground(Color.BLUE);
panelSecond.setBackground(Color.GREEN);
panelCont.add(panelFirst, "1");
panelCont.add(panelSecond, "2");
cl.show(panelCont, "1");
buttonOne.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cl.show(panelCont, "2");
}
});
buttonSecond.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cl.show(panelCont, "1");
}
});
frame.add(panelCont);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CLayout();
}
});
}
}
パネルにコンポーネントを追加する(有効な優先サイズを与える)か、パネルのgetPreferredSize()メソッドをオーバーライドします。 –