java JPanel设置大小和设置位置

java JPanel设置大小和设置位置,java,swing,layout,jframe,jpanel,Java,Swing,Layout,Jframe,Jpanel,嘿,这是我的第二篇文章,所以不要生我的气,但我对java中的JPanel有问题。我正在尝试设置大小和位置,但不起作用,我已尝试重新绘制(); 但这是行不通的。有什么帮助吗 这是我的密码: package test.test.test; import java.awt.Color; import java.awt.FlowLayout; import java.awt.TextField; import javax.swing.JButton; import javax.swing.JFram

嘿,这是我的第二篇文章,所以不要生我的气,但我对java中的JPanel有问题。我正在尝试设置大小和位置,但不起作用,我已尝试重新绘制(); 但这是行不通的。有什么帮助吗

这是我的密码:

package test.test.test;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.TextField;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JFrame  {

  JPanel colorPanel = new JPanel();

  public Display(){
    super("JPanel test");
    setLayout(new FlowLayout());
    add(colorPanel);
    colorPanel.setBackground(Color.CYAN);
    colorPanel.setSize(300, 300);
    repaint();
  } 
}

使用Flowlayout时,您应该设置首选的大小(添加到面板的组件的大小),而不是大小,因为layoutmanager将为您处理位置的大小

public class Test extends JFrame  {

  JPanel colorPanel = new JPanel();

  public Display(){
    super("JPanel test");
    getContentPane().setLayout(new FlowLayout());
    colorPanel = new JPanel
    colorPanel.setPreferedSize(new Dimension(300,300));
    colorPanel.setBackground(Color.CYAN);
    getContentPane().add(colorPanel);
    pack();
    repaint();
  } 
}

别忘了设置JFrame的可视性和大小(使用pack());)

使用Flowlayout时,您应该设置首选的大小(添加到面板的组件的大小),而不是大小,因为layoutmanager将为您处理位置的大小

public class Test extends JFrame  {

  JPanel colorPanel = new JPanel();

  public Display(){
    super("JPanel test");
    getContentPane().setLayout(new FlowLayout());
    colorPanel = new JPanel
    colorPanel.setPreferedSize(new Dimension(300,300));
    colorPanel.setBackground(Color.CYAN);
    getContentPane().add(colorPanel);
    pack();
    repaint();
  } 
}

别忘了设置JFrame的可视性和大小(使用pack());)

为了方便以后阅读此问题的读者,这里有一个简短、完整、正确的示例,用背景色定义JPanel

几乎所有时候,都应该让Swing组件布局管理器确定Swing组件的大小。在本例中,我们定义了JPanel的首选大小,因为JPanel不包含任何其他Swing组件

JFrame的默认布局管理器是BorderLayout。JPanel位于BorderLayout的中心

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class SimplePanel implements Runnable {

    @Override
    public void run() {
        JFrame frame = new JFrame("JPanel Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel colorPanel = new JPanel();
        colorPanel.setBackground(Color.CYAN);
        colorPanel.setPreferredSize(new Dimension(300, 300));

        frame.add(colorPanel);

        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new SimplePanel());
    }

}

为了方便以后阅读此问题的读者,这里有一个简短、完整、正确的示例,介绍如何使用背景色定义JPanel

几乎所有时候,都应该让Swing组件布局管理器确定Swing组件的大小。在本例中,我们定义了JPanel的首选大小,因为JPanel不包含任何其他Swing组件

JFrame的默认布局管理器是BorderLayout。JPanel位于BorderLayout的中心

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class SimplePanel implements Runnable {

    @Override
    public void run() {
        JFrame frame = new JFrame("JPanel Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel colorPanel = new JPanel();
        colorPanel.setBackground(Color.CYAN);
        colorPanel.setPreferredSize(new Dimension(300, 300));

        frame.add(colorPanel);

        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new SimplePanel());
    }

}

这看起来不像是真正编译的。你试过编译它吗?当你说它不起作用时,你的确切意思是什么?正在发生什么以及您希望发生什么?甚至不要考虑手动设置组件大小/位置-这是合适的布局管理器的专有任务。这看起来不像它实际编译。你试过编译它吗?当你说它不起作用时,你的确切意思是什么?发生了什么以及您希望发生什么?甚至不要考虑手动设置组件大小/位置-这是合适的布局管理器的唯一任务不,你,永远。不,你,永远。