0

我希望能够在我的 JFrame 中有一个固定大小为 400x400 的 JPanel。

我还希望它周围有一个 20 像素宽的边框。

主要问题是下面的代码没有坚持它的大小。` JScrollPane runningAni = new JScrollPane(new views.cRunningAnimation(model));

    runningAni.setMaximumSize(new Dimension(400,400));

    this.setSize(new Dimension(600,600));
    this.add(runningAni,BorderLayout.CENTER);`

执行此操作时,runningAni 面板会横跨整个框架。

    public void paint(Graphics g) {

    this.setBackground(new Color(0,255,0));
    }

我知道这一点是因为我的全帧将自己绘制为绿色而不仅仅是 JPanel(上面的绘制代码是针对我的面板而不是框架)

我将如何创建面板,使其始终保持相同的大小,因此它周围总是有一个 20 像素的彩色边框?

4

4 回答 4

3

BorderLayout忽略大小。您需要设置一个LayoutManager允许您将大小设置为固定大小或关心大小设置的一个。有不同的布局管理器允许这样做(例如GrindBagLayout ,或者根本没有布局管理器)。有些不是那么容易使用(例如GridBagLayout)。使用什么取决于布局的其余部分。

您可能会使用包含自定义面板的布局面板。布局面板需要一个合适的布局管理器,并且可以放在BorderLayout. 这意味着几乎不需要修改现有的布局代码。

的重点BorderLayout是用中心组件填充中心。

于 2013-03-25T16:37:44.810 回答
1

只需将您的布局设置为空,即您添加 JPanel 的任何类。然后使用 setBounds() 方法设置您的位置和大小!

例如:

public class Main extends JFrame{

      YourPanelClass panel = new YourPanelClass();

      public Main(){

           // I didn't want to put all the, everyday JFrame methods...

           setLayout(null);

           /*
               First two coordinates indicate the location of JPanel inside JFrame.
               The seconds set of coordinates set the size of your JPanel.
               (The first two coordinates, 0 and 0, tell the JPanel to start at the
                   top left of your JFrame.)
           */
           panel.setBounds(0, 0, 100, 100);

           add(panel);
      }
}

强烈推荐使用paintComponent() 方法。

例如:(显然你把它放在你的 JPanel 的类中。)

public void paintComponent(Graphics g){
     super.paintComponent(g); // don't forget this if you are going to use this method.

     //Basically this makes your JPanel's background green(I did it this way because I like doing it this way better.)
     g.setColor(new Color(0, 255, 0));
     g.fillRect(0, 0, getWidth(), getHeight());
}

如果有帮助请不要忘记点赞!

于 2014-11-03T07:27:21.870 回答
1

不要覆盖paint() 方法来设置面板的颜色。利用:

panel.setBackground(...);

创建面板时。

我怎么能在我的 Jpanel 周围设置边框

请参阅如何使用边框

于 2013-03-25T17:04:14.197 回答
-1
setPreferredSize()
setMinimumSize()
setMaximumSize()

应该做的伎俩

于 2013-03-25T16:36:57.847 回答