几个小时以来,我一直在尝试创建一个jframe,其行为如下:我有一个标题(可能包括一个图像)-这是在顶部居中。->检查这个jframe的其余部分是否应该填充jpanel。
第一个J面板应该放在顶部的中心。第二个jpanel应该放在第一个jpanel下面,依此类推。当第一个jpanel离开屏幕时,需要创建第二行。我不在乎他们是否重新排序。我准备了一张图来展示我想要的东西:例如,我需要一个这样的行为
我试过很多不同布局的组合。。但仍然找不到正确的解决方案。
这是我的代码,除了面板是从左到右排序而不是从上到下排序之外,它工作得很好(
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class myFrameClass extends JFrame {
myFrameClass() {
super();
setLayout(new BorderLayout());
GraphicsDevice[] gs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
GraphicsConfiguration[] gc = gs[0].getConfigurations();
setUndecorated(true);
setBackground(Color.WHITE);
setLocation(gc[0].getBounds().x, gc[0].getBounds().y);
setExtendedState(JFrame.MAXIMIZED_BOTH);
add(getHeader(), BorderLayout.NORTH);
add(getPanels());
setVisible(true);
}
private JPanel getPanels() {
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
int cnt = 6;
for (int i = 0; i < cnt; i++) {
p.add(getPanel());
}
return p;
}
private JPanel getPanel() {
JPanel p = new JPanel();
p.setBackground(Color.RED);
p.setPreferredSize(new Dimension(200, 200));
return p;
}
private JPanel getHeader() {
JPanel p = new JPanel();
p.add(new JLabel("Titel"));
return p;
}
public static void main(String args[]) {
new myFrameClass();
}
}
我还找到了oracle verticalflowlayout,但无法访问它。它能帮我吗?万一-怎么用?
否则。。如何使用jframe来存档该行为?谢谢您
暂无答案!
目前还没有任何答案,快来回答吧!