相关疑难解决方法(0)

将JLabel置于JPanels中心

我正在制作一个得分保持计划,但我遇到了一个问题.我试图做的是在顶部有一个包含两个JPanel的JPanel,而JPanel又包含两个团队名称.我很困惑为什么程序顶部的两个JLabel没有集中在它们所包含的JPanels中.

在此输入图像描述

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class ScoreFrame extends JFrame {

    private static final Dimension SCREEN_SIZE = Toolkit.getDefaultToolkit().getScreenSize();
    private static final int WIDTH = SCREEN_SIZE.width;
    private static final int HEIGHT = SCREEN_SIZE.height;
    private final JTextField[] nameField = new JTextField[] { new JTextField(), new JTextField() };
    private final JLabel[] nameLabel = new JLabel[] { new JLabel("Team 1"), new JLabel("Team 2") };
    private final GridBagLayout gridBag = new GridBagLayout();
    private final GridBagConstraints constraints = new GridBagConstraints();
    private final JPanel topPanel …
Run Code Online (Sandbox Code Playgroud)

java layout swing layout-manager gridbaglayout

3
推荐指数
1
解决办法
476
查看次数

如何在其JSplitPane中创建此FlowLayout包装?

我编写了这段代码示例来说明我在程序中遇到的问题.

我希望能够将JSplitPane的滑块向左滑动,超出按钮的边缘,压缩该JPanel,并让FlowLayout将按钮包裹到第二行.

相反,JSplitPane不允许我将滑块移动到屏幕上最右边的按钮,如果我调整整个JFrame的大小以强制压缩,按钮(我推测)只是在JPanel的右侧运行,下面是滑杆(我猜,因为我显然看不到它们).

我究竟做错了什么?

import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Driver implements Runnable {
    public static void main(String[] args) {
        (new Driver()).run();
    }
    public void run() {
        try {
            go();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
    }
    private void go() throws Exception {
        JFrame jframe = new JFrame("FlowLayoutTest");
        JPanel left = new JPanel();
        left.setBackground(Color.RED);
        left.setLayout(new BorderLayout());
        JPanel right = new JPanel();
        right.setBackground(Color.BLUE);
        right.setLayout(new BorderLayout());
        JSplitPane topmost =
            new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right);
        jframe.setContentPane(topmost);
        JPanel bottomleft …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager

1
推荐指数
1
解决办法
4737
查看次数

在JFrame中使用JPanel不会调整大小或正确移动

感谢您抽出宝贵时间阅读本文.我希望它不会混淆,如果需要任何其他信息,请告诉我!

问题:我正在制作类似Snake的游戏,我创建了一个JFrame,然后添加了JPanel.好吧,如果我没有在JFrame中设置它的大小,它的大小将大约为100 x 20.当我设置它的大小时,它将保持在设置的维度.但是,如果我打包()它,当我在JPanel中定义了大小时,它将缩小回100 x 20左右.我也设定了界限,没有运气.我使用FlowLayout()和BorderLayout()也没有成功.现在我的游戏运行正常并且没有任何问题,除了框架.它会切断两侧,除非我做一些我不想做的体操.

目标:我希望能够将Frame尺寸正确地指定到我指定的宽度和高度,并让面板向下移动一点,为游戏添加文本空间,这样就不会阻挡任何东西.

基本上我很困惑和慌张,我已经花了几天时间,到目前为止我还没有成功.

JFrame类:

public class main extends JFrame {

 /**
  * @param args the command line arguments
  */

 public main(){
     Board game = new Board();

     setLayout(new BorderLayout(0, 50));
     setSize(game.getGameWidth(), game.getGameHeight());
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setLocationRelativeTo(null);
     setTitle("BlockRunner");
     getContentPane().add(game);

     setResizable(false);
     setVisible(true);
 }
}
Run Code Online (Sandbox Code Playgroud)

我的董事会课程:

public class Board extends JPanel implements ActionListener, KeyListener{
 private int width = 600;
 private int height = 400;
 Board(){
     addKeyListener(this);
     setFocusable(true);
     setBackground(Color.LIGHT_GRAY);
     setSize(width, height);
     InitGame();
 }
}
Run Code Online (Sandbox Code Playgroud)

我愿意尝试任何有人愿意为我提供的东西.感谢您的时间!

编辑1 :(由于用户的答案.)使用setPerferredSize(),setMinmumSize()和setMaximumSize()不会影响结果.

java swing jpanel jframe sizing

1
推荐指数
1
解决办法
5552
查看次数

标签 统计

java ×3

swing ×3

layout-manager ×2

gridbaglayout ×1

jframe ×1

jpanel ×1

layout ×1

sizing ×1