- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在您提出 GridBagLayout 建议之前,我已经尝试过了,但无法正常工作。我想要一个尺寸为 800 x 800 且中心面板为 600x600 的框架。现在,当我运行它时,中心面板是 600x578。有人可以告诉我哪里出了问题吗?它只有 22 个像素。
public void createPlayground()
{
JFrame frame = new JFrame("ForFun Maze");
frame.setSize(WIDTH, HEIGHT);
frame.setResizable(false);
frame.setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(3,1));
buttonPanel.setPreferredSize(new Dimension(100,600));
buttonPanel.setMaximumSize(new Dimension(100,600));
buttonPanel.setBackground(SIDEBAR);
JButton reset = new JButton();
reset.setText("Reset");
reset.addActionListener(new RestartListener());
reset.setSize(100,180);
JButton pause = new JButton();
pause.setText("Pause");
pause.setSize(100,180);
pause.addActionListener(new PauseListener());
JButton quit = new JButton();
quit.setText("Quit");
quit.setSize(100,180);
quit.addActionListener(new QuitListener());
buttonPanel.add(pause);
buttonPanel.add(reset);
buttonPanel.add(quit);
Location[][] array = null;
if(level == 1)
{
array = glevel1;
}
CenterPanel centerPanel = new CenterPanel(array);
centerPanel.setPreferredSize(new Dimension(600,600));
centerPanel.setMinimumSize(new Dimension(600,600));
centerPanel.setBackground(BACKGROUND);
JPanel leftPanel = new JPanel();
leftPanel.setBackground(SIDEBAR);
leftPanel.setPreferredSize(new Dimension(100,600));
JPanel northPanel = new JPanel();
northPanel.setBackground(SIDEBAR);
northPanel.setPreferredSize(new Dimension(800,100));
JPanel bottomPanel = new JPanel();
bottomPanel.setBackground(SIDEBAR);
bottomPanel.setPreferredSize(new Dimension(800,100));
frame.add(northPanel, BorderLayout.NORTH);
frame.add(leftPanel, BorderLayout.WEST);
frame.add(centerPanel, BorderLayout.CENTER);
frame.add(buttonPanel, BorderLayout.EAST);
frame.add(bottomPanel, BorderLayout.SOUTH);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(dim.width / 2 - frame.getSize().width / 2, dim.height / 2 - frame.getSize().height / 2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println("Size of centerpane"+centerPanel.getWidth()+"x"+centerPanel.getHeight());
}
最佳答案
pack()
而不是 setSize()
(因为您没有考虑 JFrame 插入
setLocationRelativeTo(null)
(在调用 pack()
之后)使框架居中。JComponent
上调用 setSize()
是无用的,因为 LayoutManager
会覆盖它们(同样适用于 setBounds
和 setLocation
)。import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.xml.stream.Location;
public class Example {
public void createPlayground() {
JFrame frame = new JFrame("ForFun Maze");
frame.setResizable(false);
frame.setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(3, 1));
buttonPanel.setPreferredSize(new Dimension(100, 600));
buttonPanel.setMaximumSize(new Dimension(100, 600));
JButton reset = new JButton();
reset.setText("Reset");
reset.setSize(100, 180);
JButton pause = new JButton();
pause.setText("Pause");
pause.setSize(100, 180);
JButton quit = new JButton();
quit.setText("Quit");
quit.setSize(100, 180);
buttonPanel.add(pause);
buttonPanel.add(reset);
buttonPanel.add(quit);
Location[][] array = null;
JPanel centerPanel = new JPanel();
centerPanel.setPreferredSize(new Dimension(600, 600));
centerPanel.setMinimumSize(new Dimension(600, 600));
JPanel leftPanel = new JPanel();
leftPanel.setPreferredSize(new Dimension(100, 600));
JPanel northPanel = new JPanel();
northPanel.setPreferredSize(new Dimension(800, 100));
JPanel bottomPanel = new JPanel();
bottomPanel.setPreferredSize(new Dimension(800, 100));
frame.add(northPanel, BorderLayout.NORTH);
frame.add(leftPanel, BorderLayout.WEST);
frame.add(centerPanel, BorderLayout.CENTER);
frame.add(buttonPanel, BorderLayout.EAST);
frame.add(bottomPanel, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
System.out.println("Size of centerpane" + centerPanel.getWidth() + "x" + centerPanel.getHeight());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Example().createPlayground();
}
});
}
}
关于java - BorderLayout setSize 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027350/
假设我有一个 JTextField,所以有两个选项 setSize(WIDTH, HEIGHT) 和 setSize(new Dimension(WIDTH, HEIGHT)) 像这样: JTextF
这段代码运行得很好。但是,当我输入 setSize(700,700) 并运行代码时,它不会显示 JButton,而只显示框架。我认为 JButton 的网格布局可能存在一些问题,因此我将每个网格布局的
所以我似乎无法弄清楚为什么会出现此错误(取消引用空指针)。 我必须初始化 newframe,否则我会收到未初始化错误,并且 NetBeans 建议我初始化它。然而,这样做之后,我不断收到此错误。下面是
我有一个用于主要 JFrame 的 ComponentListener,它在调整大小时发送一个事件,但在事件被触发时,Jpanel 已调整大小。 public class Test implement
我有一个程序需要两个按钮,一个是常规按钮,另一个是图片会根据鼠标滚动而改变。目前,由于图片很大,JButton 自定义也很大,我可以更改自定义的大小并保持图像(和翻转图像)成比例吗?我试过 setSi
我正在使用一个简单的棋盘程序,它运行良好,但它非常小。我尝试使用 acm.graphics.setsize 方法调整窗口大小,但直到我放置图形对象后它才调整大小。我是否需要做一些事情来“刷新”对程序的
我有一个示例代码: import java.awt.*; import javax.swing.*; import javax.swing.border.BevelBorder; public cla
我正在使用此代码在 OSX 上调整 Electron 窗口的大小: document.getElementById("resize-btn2").addEventListener("click", f
我正在使用 Java 测试一个简单的东西。 package us.superdisk.Teststs; import java.awt.Dimension; import java.awt.Graph
我想要尺寸完全适合我的屏幕的 JFrame。我使用 getScreenSize(); 来获取计算机的分辨率并将其设置为 JFrame 的大小。然而,由于标题栏的原因,我发现 Jframe 的尺寸实际上
我正在制作一个大小为 500x500 像素的 JFrame。我制作了一个蓝色背景,并在右下角添加了一个从 (490,490) 到 (500,500) 的红色方 block 。 图片: 我在屏幕上没有看
尝试设置 JOptionPane 的大小,但它坚持使用相同的大小。我尝试过 setPreferredSize 和 setSize 但由于某种原因 JOptionPane 坚持使用相同的宽度和高度。基本
在您提出 GridBagLayout 建议之前,我已经尝试过了,但无法正常工作。我想要一个尺寸为 800 x 800 且中心面板为 600x600 的框架。现在,当我运行它时,中心面板是 600x57
我正在尝试在动态更新页面内容后调整 Facebook Canvas 应用程序的高度。人们应该使用 FB.Canvas.setSize() 来做到这一点,但它只会增加高度。与.setAutoResize
我在 Android 应用程序中创建按钮时遇到两个问题。 按钮(经典Button)中的图像模糊。我认为 Android studio 会增加图像的大小,但不确定。这是模拟器的屏幕和使用的图像: 有办法
我的 Qt5 GUI 中有 QSplitter 小部件,并且有两个子小部件添加到该拆分器。并且有一个 QPushButton 小部件,当按下该按钮时,第二个子部件消失,当再次按下该按钮时,该子部件出现
import javax.swing.JFrame; import javax.swing.SwingUtilities; class Demo { JFrame jf; Demo()
看看这段代码 friend 不知道为什么我不能设置JPanel的大小.... import java.io.*; import java.util.*; import java.sql.*; //im
本文整理了Java中org.bukkit.WorldBorder.setSize()方法的一些代码示例,展示了WorldBorder.setSize()的具体用法。这些代码示例主要来源于Github/
我是 java swing 的新手,正在构建一个带有菜单和带有 BorderLayout 的 JPanel 的应用程序。但即使设置了 setSize,面板也不会显示,因为我在这里是红色的。这里我使用菜
我是一名优秀的程序员,十分优秀!