Java 如何实现理想的布局?
我正在尝试创建这个布局Java 如何实现理想的布局?,java,swing,Java,Swing,我正在尝试创建这个布局 对于一个在Java8中使用Swing的项目,但是由于Swing是我从未学过的东西,我真的很难尝试设置布局。我已经尽力了,但我就是不明白这一点。我不认为我会对窗口的后端功能有任何问题,我只是不能让它看起来像我需要的那样。解决复杂计算任务的一个常见策略是将它们分解为小的、定义良好的可管理任务。分而治之 这也适用于gui:将设计分解为小的、易于布局的容器。 在这种情况下,考虑将设计分为4个区域(JBAND)嵌套在主JPANS:中。 这个基本布局可以让您开始,可以这样实现:
对于一个在Java8中使用Swing的项目,但是由于Swing是我从未学过的东西,我真的很难尝试设置布局。我已经尽力了,但我就是不明白这一点。我不认为我会对窗口的后端功能有任何问题,我只是不能让它看起来像我需要的那样。解决复杂计算任务的一个常见策略是将它们分解为小的、定义良好的可管理任务。分而治之
这也适用于gui:将设计分解为小的、易于布局的容器。 在这种情况下,考虑将设计分为4个区域(JBAND)嵌套在主JPANS:中。 这个基本布局可以让您开始,可以这样实现:
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui {
private final String text ="Growing ";
private JPanel grid;
private JFrame f;
Gui() {
creategui();
}
void creategui(){
f = new JFrame("Hexagon Cross For Less");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setLayout(new BoxLayout(f.getContentPane(),BoxLayout.Y_AXIS));
JPanel primes = new JPanel();
primes.setPreferredSize(new Dimension(1000,120));
primes.setBackground(Color.CYAN);
f.add(primes);
JPanel xFiles = new JPanel();
xFiles.setPreferredSize(new Dimension(1000,120));
xFiles.setBackground(Color.YELLOW);
f.add(xFiles);
JPanel actions = new JPanel();
actions.setPreferredSize(new Dimension(1000,120));
actions.setBackground(Color.GREEN);
f.add(actions);
JPanel status = new JPanel();
status.setPreferredSize(new Dimension(1000,40));
status.setBackground(Color.LIGHT_GRAY);
f.add(status);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
new Gui();
}
}
它生成以下布局:
它可以通过在单独的类中表示每个不同的区域(JPanel
)来更好地构造以下代码生成完全相同的布局(它是一个单独的文件mre。将其复制到
Gui.java
并运行):
若要继续,请应用相同的技术并定义4个子面板中每个面板的布局动作的设计可以是:
提示:prime
和CrossFiles
具有完全相同的布局 欢迎来到堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。您目前没有提出任何问题。请在您的帖子中添加问题和问题的详细描述。您可能需要添加一个来显示您的问题。我建议您可以使用WindowBuilder或任何其他基于GUI的软件来拖放您需要的ui元素。它将加快您的项目,您可以将更多精力放在后端—不要使用IDE进行拖放。最后,您将花费时间学习IDE而不是学习Java/Swing,如果您迁移到另一个IDE,代码将无法维护。了解如何使用布局管理器,然后使用不同的布局管理器将布局逻辑分解为不同的面板。好吧,您还没有发布显示您所尝试的代码。因此,首先简化程序,尝试用第一个面板创建一个框架。我建议您可以轻松使用GridBagLayout。把你试过的东西贴出来,也许有人会帮你改正。我们不会为您编写代码。
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Gui {
private final String text ="Growing ";
private JPanel grid;
private JFrame f;
Gui() {
creategui();
}
void creategui(){
f = new JFrame("Hexagon Cross For Less");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.add(new MainPane());
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
new Gui();
}
}
class MainPane extends JPanel{
MainPane() {
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
add(new Primes());
add(new CrossFiles());
add(new Actions());
add(new Status());
}
}
class Primes extends JPanel{
Primes() {
setPreferredSize(new Dimension(1000,120));
setBackground(Color.CYAN);
}
}
class CrossFiles extends JPanel{
CrossFiles() {
setPreferredSize(new Dimension(1000,120));
setBackground(Color.YELLOW);
}
}
class Actions extends JPanel{
Actions() {
setPreferredSize(new Dimension(1000,120));
setBackground(Color.GREEN);
}
}
class Status extends JPanel{
Status() {
setPreferredSize(new Dimension(1000,40));
setBackground(Color.LIGHT_GRAY);
}
}