Tag: layout manager

删除GridBagLayout中按钮周围的空间

我写了这个令人头疼的来源,以展示另一个问题中提到的游戏画面的布局。 它将按钮(或标签,可在启动时选择)放入GridBagLayout 。 如果您在提示时(在GUI出现之前)选择不使用按钮,则整个GUI非常紧凑且没有间隙。 但是如果你选择使用按钮(如果你的设置就像我的那样)看起来像这样…… 注意红色水平线。 这是面板显示的BG颜色。 当GUI使用标签时,不会看到这些行。 稍微拉伸GUI以查看它甚至没有在每行之后放置一条红线(有九行) – 尽管每行使用按钮(相同的组件)。 如何在使用按钮时删除额外的垂直空间? 我认为它必须是我在配置按钮或行权重时忘记做的事情,但我无法弄清楚是什么! import java.awt.*; import java.awt.image.BufferedImage; import javax.swing.*; import java.net.URL; import javax.imageio.ImageIO; public class SoccerField { private JPanel ui = null; int[] x = {0, 35, 70, 107, 142, 177, 212, 247, 282, 315}; int[] y = {0, 45, 85, 140, 180, 225, 265, […]

GridBagLayout:均匀分布的单元格

是否可以使用GridBagLayout管理器完全模拟GridLayout的行为? 基本上,我有一个8×8网格,其中每个单元格应具有相同的宽度和高度。 GridLayout自动执行此操作。 但我想在网格中添加另一行和列,其大小与其他大小不同 。 该行/列应占用可能遗留的所有剩余空间(因为可用大小无法平均分配到8个单元中)。 这是可能的,还是我 – 再次 – 必须使用不同的布局管理器? 编辑 这是我想要实现的简单图形,简化为4个单元格: 有色单元格是我添加到实际网格(灰色)的单元格,其中单元格具有相同的高度和宽度x 。 因此网格的高度和宽度为4*x 。 我现在希望其他单元格具有必要的宽度/高度(minimumSize)加上完整尺寸的可用宽度/高度的其余部分。 如果更改整个面板的大小,灰色网格单元应该再次占用尽可能多的空间。

如何将JTextfield居中

我在程序中居中使用JTexfield时遇到了麻烦。文本字段似乎与JButton不对齐。 我尝试过使用x.setHoriontalAlignment(JTextfield.CENTER); 但无济于事。 有任何想法吗? import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JPanel; import java.awt.Container; import java.awt.GridLayout; import java.awt.GridBagLayout; public class WidgetProject implements ActionListener { //class constants private static final Color BUTTON_COLOUR1 = Color.WHITE; private static final int BUTTON_HEIGHT = 75; private static final int BUTTON_WIDTH […]

java哪个布局管理器适合这个任务?

我有一个JPanel父母,里面有3个JPanel孩子。 他们目前都使用GridLayout并一起代表一个UML类。 问题是,当我添加新属性或方法时,所有3个JPanel都会增长到相同的大小。 欲望的行为是: 每当添加方法或属性时,标题框的大小始终保持不变。 添加方法时,只有方法面板增长,标题和属性面板的大小保持不变。 添加属性时,只有属性面板增长,其他面板大小保持不变。 只要添加了方法/属性,父JPanel就可以自动增长/缩小。 我正在玩GridBagLayout atm,但我无法接近欲望的结果。 有一种简单(或更简单)的方式来解决这个问题吗?! 这里有几张照片可以展示我的情况。 新创建的UML类=> 这是它目前的表现方式=> 但我想要这个=> 或者这个=> 或者这个=> Edit2:为了清晰起见添加了新的图片。 如果原始版本具有误导性,我非常抱歉。 编辑3:YESS! 我已经整理好了! 感觉就像永远! 这是SSEEC: 儿童小组 import java.awt.Component; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.MouseEvent; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.MouseInputAdapter; import javax.swing.event.MouseInputListener; public class APanel extends JPanel{ private JTextField tf; public APanel() { this.setLayout(new GridLayout(0,1)); this.addMouseListener(mouseInputListener); } […]

约束必须是一个字符串(或null)

我找不到拯救生命的错误。 错误是“约束必须是一个字符串(或null)”我不知道它为什么给我这个错误,我必须缺少一些简单的东西。 我尝试添加 例如:dataPane = new JPanel(new GridBagLayout()); 我的所有面板都没有。 我正在尝试将面板(2)添加到扩展面板。 这是我的代码: public class SearchFlight extends JPanel { //giving names to the components\\\ private JRadioButton oneWay; private JRadioButton roundTrip; private ButtonGroup buttonGroup; private JLabel fromDestdLabel; private JComboBox fromDestCb; private JLabel toDestLbl; private JComboBox toDestCb; private JLabel departLbl; private JComboBox departMonth; private JComboBox departDay; private JTextField departYear; […]

Swing:列流布局管理器?

我正在寻找一个LayoutManager ,它允许我在列中显示容器(例如JPanel)中的一组组件,大致如下。 容器的宽度是输入约束。 容器的首选高度是宽度的函数,并且是: 当布置在多个列中时,使组件适合宽度所需的最小高度。 使组件适合单列所需的最小高度。 组件将按报纸列顺序排列,从上到下,然后从左到右。 这是一个显示13个组件的示例(低科技文本显示)。 如果它们可以放在3列中,它们看起来像这样: Foo1 Foo6 Foo11 Foo2 Foo7 Foo12 Foo3 Foo8 Foo13 Foo4 Foo9 Foo5 Foo10 如果那太宽了,它们看起来像这样: Foo1 Foo8 Foo2 Foo9 Foo3 Foo10 Foo4 Foo11 Foo5 Foo12 Foo6 Foo13 Foo7 如果它太宽,它们看起来像这样: Foo1 Foo2 Foo3 Foo4 Foo5 Foo6 Foo7 Foo8 Foo9 Foo10 Foo11 Foo12 Foo13 是否有可以使用的预先存在的LayoutManager或子类来执行此类操作? 编辑:这非常接近关于垂直布局的另一个问题 ,但是该布局将组件高度作为约束,并且我的组件宽度是约束。

Java Swing GridLayout“Cell span”?

有没有办法让网格布局中的单个元素占用网格中的多个位置。 示例:我想创建一个占据整个网格行的文本框,有什么办法可以做到这一点吗?

如何在Java Swing中控制JTextField的宽度?

我试图在一行上有几个JTextFields,但我不希望它们具有相同的宽度。 如何控制宽度并使其中一些宽度比其他宽度更宽? 我希望他们一起占据总宽度的100%,所以如果我可以使用某种形状的东西会很好。 我试过.setColumns()但它没有意义。 这是一个示例,我使用三行,其中三个字符串应显示为列: import java.awt.GridLayout; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class RowTest extends JPanel { class Row extends JComponent { public Row(String str1, String str2, String str3) { this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); JTextField fld1 = new JTextField(str1); JTextField fld2 = new JTextField(str2); JTextField fld3 = new JTextField(str3); fld1.setColumns(5); […]

java GridBagLayout锚点

学习GridBagLayout,这里的问题是,名称标签和combox没有显示在面板的顶部,但我已将其锚点设置为NORTH。 为什么? import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class Test2 { public Test2() { JFrame frame = new JFrame(); frame.setTitle(“test”); frame.getContentPane().setLayout(new GridLayout(1,2)); frame.setSize(800, 600); JPanel panel1 = new JPanel(); panel1.setLayout(new GridBagLayout()); JLabel label = new JLabel(“name”); GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.anchor = GridBagConstraints.NORTH; […]

在卡布局内定位组件

我有一个主框架,我想用卡片布局在中心位置显示我的NewUser类的对象。这是我的主要课程 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CardLayoutDemo implements ItemListener { JPanel cards; //a panel that uses CardLayout final static String BUTTONPANEL = “Card with JButtons”; final static String TEXTPANEL = “Card with JTextField”; public void addComponentToPane(Container pane) { //Put the JComboBox in a JPanel to get a nicer look. JPanel comboBoxPane = […]