gpt4 book ai didi

java - 自定义 Swing 布局

转载 作者:行者123 更新时间:2023-11-29 03:09:01 26 4
gpt4 key购买 nike

我正在创建一个游戏并按照我想要的方式设置框架,我需要了解如何创建服装布局。我已经尝试创建多个具有不同布局的面板,例如 Flow 和 Border,并在主面板上添加面板,但我仍然没有得到想要的结果。我想要的在附图中显示。请告诉我是否有任何代码段有帮助。
问题:1. 是否可以得到这样的布局? (我希望修复它。)enter image description here

  1. 在“按钮”下有您在图片中看到的 JLabel。我希望它的文本从左边开始,沿着列向下,从中间开始,然后到右边的列。这可能吗?

最佳答案

我在评论中写的内容略有不同,因为 BoxLayout 有点东西,我从不使用,因为我不擅长:-)

尽管我为克服这个缺点所做的工作是采用 2 个 JPanel,每个用于 JTextFieldJButton 并且其余相同,如本例所示:

import java.awt.*;
import javax.swing.*;

public class LayoutExample {

private static final int GAP = 5;
private static final int TOTAL_LABELS = 18;

private JTextField tField;
private JButton button;
private JLabel[] labels;

private void displayGUI () {
JFrame frame = new JFrame ( "Layout Example" );
frame.setDefaultCloseOperation ( JFrame.DISPOSE_ON_CLOSE );

JPanel contentPane = getPanel ();
contentPane.setLayout ( new BorderLayout ( GAP, GAP ) );

JPanel headerPanel = getPanel ();
headerPanel.setLayout ( new GridLayout ( 0, 1, GAP, GAP ) );
JPanel textFieldPanel = getPanel ();
tField = new JTextField ( 10 );
textFieldPanel.add ( tField );
JPanel buttonPanel = getPanel ();
button = new JButton ( "Button" );
buttonPanel.add ( button );
headerPanel.add ( textFieldPanel );
headerPanel.add ( buttonPanel );
contentPane.add (headerPanel, BorderLayout.PAGE_START );

JPanel centerPanel = getPanel ();
centerPanel.setLayout ( new GridLayout ( 0, 3, GAP, GAP ) );
labels = new JLabel [ TOTAL_LABELS ];
for ( int i = 0; i < labels.length; ++i ) {
labels [ i ] = new JLabel ( String.valueOf ( i ), JLabel.CENTER );
centerPanel.add ( labels [ i ] );
}
contentPane.add ( centerPanel, BorderLayout.CENTER );


frame.setContentPane ( contentPane );
frame.pack ();
frame.setLocationByPlatform ( true );
frame.setVisible ( true );
}

private JPanel getPanel () {
JPanel panel = new JPanel ();
panel.setOpaque ( true );
panel.setBorder ( BorderFactory.createEmptyBorder ( GAP, GAP, GAP, GAP ) );

return panel;
}

public static void main ( String[] args ) {
Runnable runnable = new Runnable () {
@Override
public void run () {
new LayoutExample ().displayGUI ();
}
};
EventQueue.invokeLater ( runnable );
}
}

输出:

http://i.imgur.com/FMcV9GS.png

关于java - 自定义 Swing 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com