gpt4 book ai didi

java - 如何移动 java gui 元素?

转载 作者:行者123 更新时间:2023-12-01 11:48:00 26 4
gpt4 key购买 nike

    Panel controlPanel = new Panel ();
JPanel chatPanel = new JPanel();
JPanel buttomsPanel = new JPanel();

controlPanel = new Panel();
controlPanel.setLayout(new FlowLayout(10));



Panel panel = new Panel();

panel.setBackground(Color.DARK_GRAY);
panel.setSize(700,700);
GridLayout layout = new GridLayout(6,6, 10, 10);

panel.setLayout(layout);


for (int i= 0; i < 36; i++){
panel.add(new Button(""));
}
controlPanel.add(panel);


buttomsPanel.add(new Button(""));
frame.add(buttomsPanel);


frame.add(controlPanel);
frame.setSize(900, 700);

基本上,我添加到 GUI 的第二个按钮不会显示。另外,我想放置另外两个字段,但我也不知道如何移动它们,或者它们是否应该先进入面板然后再移动。

最佳答案

让我们从歧义开始......

Buttonjava.awt.Buttonjavafx.scene.control.Button,无论哪种情况,它可能都不是可以很好地使用 JPanel

Panel 是一个java.awt.Panel,不能与 Swing 很好地配合。在 Swing 中不混合 AWT 组件会更容易。

接下来,JFrame 默认情况下使用 BorderLayout,这意味着当您执行以下操作时...

frame.add(buttomsPanel);
frame.add(controlPanel);

它可能是要显示的 controlPanel(考虑到 AWT 和 Swing 之间 z 顺序的奇怪之处,无论您添加的顺序如何,它都可能希望显示)他们)。

要解决此问题,您需要在 BorderLayout 中指定要添加面板的位置,例如...

frame.add(buttomsPanel);
frame.add(controlPanel, BorderLayout.SOUTH);

并使用 JPanel 代替 Panel,使用 JButton 代替 Button...

参见How to Use Borders了解详情

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Panel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JPanel controlPanel = new JPanel(new FlowLayout(10));
JPanel chatPanel = new JPanel();
JPanel buttomsPanel = new JPanel();

Panel panel = new Panel();

panel.setBackground(Color.DARK_GRAY);
panel.setSize(700, 700);
GridLayout layout = new GridLayout(6, 6, 10, 10);

panel.setLayout(layout);

for (int i = 0; i < 36; i++) {
panel.add(new JButton(""));
}
controlPanel.add(panel);

buttomsPanel.add(new JButton(""));

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(buttomsPanel);
frame.add(controlPanel, BorderLayout.SOUTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

}

关于java - 如何移动 java gui 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29002210/

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