- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的计算类(class)纠正一个简单的基于文本的游戏,但我在掌握如何使用 AWT GridBagLayout
和 GridBagConstraints
时遇到了一些问题。
每当我运行代码时,我都会收到此错误消息:
这是我的 GUI 代码的副本:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.*;
@SuppressWarnings("unused")
public class GUI extends JFrame
{
public void main(String[] args)
{
new GUI();
}
public GUI()
{
JFrame AG = new JFrame("Adventure Game");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0, 0, screenSize.width, screenSize.height);
setResizable(true);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p=new JPanel();
p.setLayout (new GridBagLayout());
AG.add(p);
GridBagConstraints GBC = new GridBagConstraints();
AG.getContentPane().add(p, BorderLayout.NORTH);
JButton saveButton =new JButton("Save");
JButton loadButton =new JButton("Load");
JButton optionsButton = new JButton("Options");
JLabel textBox= new JLabel("Story line will go here.");
JLabel label11 = new JLabel("Test 1");
GBC.gridx = 0;
GBC.gridy = 1;
p.add(label11,AG);
JLabel label12 = new JLabel("Test 2");
GBC.gridx = 0;
GBC.gridy = 2;
p.add(label12,AG);
JLabel label13 = new JLabel("Test 3");
GBC.gridx = 0;
GBC.gridy = 3;
p.add(label13,AG);
JLabel label14 = new JLabel("Test 4");
GBC.gridx = 0;
GBC.gridy = 4;
p.add(label14,AG);
add(p);
}
}
我认为问题是我尝试使用 GridBagConstraints
而不使用 GridBagLayout
但我对 java 很陌生,所以不知道如何使用 GridBagLayout
为了解决这个问题,大部分代码来 self 在 youtube 上看过的各种不同的教程,但不是复制的,只是采用了不同人的做法并试图将其糟糕地混合起来
感谢您的帮助- 汤姆
最佳答案
您正在通过AG
,这是 JFrame
的一个实例作为添加组件时的约束...
p.add(label11, AG);
相反,您应该使用 GBC
...
p.add(label11, GBC);
您的GUI
延伸自 JFrame
,但您正在创建另一个 JFrame
的实例在里面,这非常令人困惑......
通常建议您不要从顶级容器进行扩展,例如 JFrame
,因为您并没有真正向类添加新值,它会将您锁定在单个容器中,从而降低了 UI 的可重用性
相反,坚持使用 JFrame
的新实例( AG
)...
public class GUI {
public static void main(String[] args) {
new GUI();
}
public GUI() {
JFrame AG = new JFrame("Adventure Game");
AG.setResizable(true);
AG.setVisible(true);
AG.setDefaultCloseOperation(EXIT_ON_CLOSE);
//...
<小时/>
你真的应该打电话setVisible
最后,在构建核心接口(interface)之后,这将减少 API 更新组件方式的潜在问题
public GUI() {
JFrame AG = new JFrame("Adventure Game");
AG.setResizable(true);
AG.setDefaultCloseOperation(EXIT_ON_CLOSE);
//...
AG.setVisible(true);
}
<小时/>
这个...
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0, 0, screenSize.width, screenSize.height);
最大化窗口的方式很糟糕,只需使用 JFrame#setExtendedState
并通过它JFrame.MAXIMIZED_BOTH
...
setExtendedState(JFrame.MAXIMIZED_BOTH);
<小时/>
您应该学习并使用该语言的常见命名约定,请通读Code Conventions for the Java TM Programming Language ,这将使人们更容易阅读您的代码,也让您更轻松地阅读其他人
<小时/>Swing 有一些重要的规则,其中之一是确保您始终在事件分派(dispatch)线程的上下文中创建和修改 UI。
public GUI() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
new GUI();
}
});
}
参见Initial Threads了解更多详情
<小时/>您的 main 方法应声明为 static
,例如...
public static void main(String[] args) {
否则该类将无法作为 Java 的主入口点运行
关于java - 线程中的异常 "main"java.lang.IllegalArgumentException : cannot add to layout: constraints must be a GridBagConstraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006427/
我不确定是否理解好几个 Android /res/layout 文件夹所起的作用。 layout:一般布局 layout-port:必须更改为纵向的小部件布局 layout-land:小部件的布局,必
我在 Qt 4.7 中有一个界面,但我很难按照自己的意愿行事。 所需行为的基本描述:用户在组合框中进行选择,这会导致查询转到另一个函数,该函数返回一个 QHBoxLayout 对象,该对象通常包括多个
我在 res 文件夹中创建了 layout-large、layout-normal 和 layout-xlarge 并且我将所有 xml 文件复制到那些布局文件夹中 首先,我想问一下 layout(d
如图所示。我想在布局上方显示星图。我是这种编码的新手。 我的查询是1)是否可以在我的布局端显示星标(图像)? 2) 如果每次点击我的 Activity 时我都想显示星标并显示第二张图片,这可能吗?意味
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 上个月关闭。 Improve this questio
我正在使用 android studio 中的 Material 设计为 pre lollipop 设备创建一个 android 应用程序,我是 android studio 的新手我正在我的项目中创
我对 Android 布局设计感到困惑。我想实现下图中的布局: 但是下面的代码产生了类似这张图片的东西: 我的代码
如果我有: Some Element.... Other Element
我有一个单元格(称为A),它在更高层次的单元格(称为P)中使用一次。当我将 A 放在 P 中时,它的边框比 A 的实际内容大得多。当我下降到 A 并进行缩放时,它被缩小了,表明边缘存在一些东西。 我可
我有一个“auth-redirect”模块,位于所有页面布局文件(1column、2column 等)的开头。这可以确保在渲染任何页面之前,如果用户未经过正确身份验证,则会重定向到登录页面。 我允许呈
我的app只支持landscape模式(这是业务需求)。 我在 layout-land 文件夹中有一个布局 xml 文件,但我没有费心创建一个 layout 文件夹,因为我在 Android list
我正在尝试为我的 Android 应用程序创建启动屏幕,如链接 http://developer.xamarin.com/guides/android/user_interface/creating_
我目前正在开发一个应用程序,我正在使用 swdp为了创建对多个屏幕的支持。 我添加了 sw400dp文件夹,根据 Android Studio 的 XML 渲染器,它基本上包含所有较小的手机。 这意味
Android 在“layout-normal”和“layout”文件夹中处理布局的方式有什么不同吗?如果我有一个被认为布局很小的设备,如果只有这两个选项,它会查看哪个文件夹? 最佳答案 是的,在您给
我已经看到了在单个页面上创建多个强制布局的解决方案,其中每个布局都包含在其自己的SVG中。但是,我一直无法找到有关如何在单个SVG中包括多个力布局的帮助。每个布局都有自己的数据与之关联。 可以在htt
我听说 Constraint-Layout 中的指南和 RTL 存在一些错误。但是这些方法都没有帮助我。我的BottomNavigation 的两边都有指南,一切都在LTR 中工作,但在RTL 中,其
我有以下渲染函数: render() { return ( Header
我知道如何使用以下文件夹,但例如我不知道 layout-small 和 layout-sw320dp 有什么区别? 此外,建议我哪些文件夹对优化很重要。我不喜欢我的程序被用户视为不规则。我希望得到您的
layout-latest.js ui-layout-west 面板 west: { paneSelector: ".ui-layout-west"
我是 Android 开发的新手,对我来说,了解图形布局和 xml 如何相互关联的一个好方法是尝试 xml 属性并查看图形 UI 中的变化。有没有一种方法可以同时并排查看,而不必从一个切换到另一个?图
我是一名优秀的程序员,十分优秀!