簡體   English   中英

我如何在Java GUI元素周圍移動?

[英]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.Buttonjavafx.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代替PanelJButton代替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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM