[英]how do I move around java gui elements?
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的第二個按鈕。 另外,我想再輸入兩個字段,我也不知道如何移動它們,或者不知道它們是否應該先進入面板然后再移動。
讓我們從含糊之處開始...
Button
可以是java.awt.Button
或javafx.scene.control.Button
,在兩種情況下,它都可能無法與JPanel
配合使用。
Panel
是一個java.awt.Panel
,不能與Swing一起使用。 不將AWT組件混入Swing中會更容易。
接下來, JFrame
默認使用BorderLayout
,這意味着當您執行以下操作時...
frame.add(buttomsPanel);
frame.add(controlPanel);
這是controlPanel
這很可能是被顯示在一個(給定的Z排序的AWT和Swing之間的古怪,它可能想不管你添加的順序來顯示)。
要解決此問題,您需要在BorderLayout
中指定要添加面板的位置,例如...
frame.add(buttomsPanel);
frame.add(controlPanel, BorderLayout.SOUTH);
並使用JPanel
代替Panel
和JButton
代替Button
...
有關詳細信息,請參見如何使用邊框 。
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);
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.