这是给俄罗斯方块的。玻璃(蓝色)位于左侧,控件(红色面板)位于右侧。换句话说,现在我只想将框架分为两部分:左(较宽)部分是蓝色,右部分是红色。而已。但是我似乎没有做到这一点。
因此,我的逻辑是:让框架具有FlowLayout。然后,我添加了两个面板,这意味着它们应该连续放置。
我准备了这个:
public class GlassView extends JFrame{ public GlassView(){ this.setSize(600, 750); this.setVisible(true); this.setLayout(new FlowLayout()); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel glass = new JPanel(); glass.setLayout(new BoxLayout(glass, BoxLayout.Y_AXIS)); glass.setSize(450, 750); glass.setBackground(Color.BLUE); glass.setVisible(true); this.add(glass); JPanel controls = new JPanel(); controls.setLayout(new BoxLayout(controls, BoxLayout.Y_AXIS)); controls.setSize(150, 750); controls.setBackground(Color.RED); controls.setVisible(true); this.add(controls); } }
但是在屏幕上仅可见灰色框。你能帮我理解为什么吗?
正如Amir所说,您想为此使用JSplitPane。我已经在您的代码中添加了它。看看这个。
/** * @param args the command line arguments */ public static void main(String[] args) { GlassView view = new GlassView(); } private static class GlassView extends JFrame { private int width = 600; private int height = 750; public GlassView() { this.setSize(width, height); this.setVisible(true); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel glass = new JPanel(); glass.setSize(450, 750); glass.setBackground(Color.BLUE); glass.setVisible(true); JPanel controls = new JPanel(); controls.setSize(150, 750); controls.setBackground(Color.RED); controls.setVisible(true); JSplitPane splitPane = new JSplitPane(); splitPane.setSize(width, height); splitPane.setDividerSize(0); splitPane.setDividerLocation(150); splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT); splitPane.setLeftComponent(controls); splitPane.setRightComponent(glass); this.add(splitPane); } }