Tag: gridbaglayout

布局管理器,用于背景图像和文本

我正在尝试考虑最好的布局管理器来实现下图。 我知道绝对定位是我习惯的,但我无法使用它获得背景图像。 GridBagLayout非常好,但是当我尝试为每个网格获得单独的图像时,我会非常努力。 有没有人知道一个简单的方法,或简单的代码来实现以下目的?

试图获得一个swing菜单来使用GridBagLayout

我正在尝试构建一个带有两个垂直列的应用程序,锚定在左侧,右侧有一个大框。 我可以让第一个菜单坚持到右边,但由于某种原因,第二个菜单不会出现在第一个菜单旁边。 我已经阅读了有关额外空间被推向最后一列和最后一行(右侧)的内容。 我该怎么处理呢? PS我正在使用网格袋布局。 这是我得到的: 主UserView类:package gui; import actions.DepositAddButtonAction; import actions.DepositButtonAction; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; public class UserView { public JFrame frame; private JPanel menuPanel; private JPanel secondMenuPanel; private JPanel contentPanel; private JButton depositButton; private JButton creditButton; private JButton exchangeButton; private JButton simulationButton; private JButton informationButton; private JLabel menuLabel; private GridBagLayout gridBagLayout; […]

摆动动态(自动)贴合布局

考虑100(动态) JLabel对象,我想在可resize的JPanel显示它们。 目前我使用网格包布局(2列和50行),但是当用户resize并展开表单时,我希望(例如)4列25行,小表格(1列和100行)相同,以其他方式填满整个面板(没有任何空白区域)。 我知道这应该手动完成,目前我重绘(重绘)所有成员一旦用户调整表单,但我只是想知道是否有任何准备好的解决方案这样做。 提前致谢。

Java GridBagLayout – 如何将我的组件无间隙地逐个定位?

我正在使用GridBagLayout通过以下代码放置我的GUI组件,希望组件在列中逐个放置,没有任何间隙: import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class TestGUI extends JFrame{ public TestGUI(){ JPanel bigPanel = new JPanel(new GridBagLayout()); JPanel panel_a = new JPanel(); JButton btnA = new JButton(“button a”); panel_a.add(btnA); JPanel panel_b = new JPanel(); JButton btnB = new JButton(“button b”); panel_b.add(btnB); GridBagConstraints c = new GridBagConstraints(); c.gridx = […]

GridBagLayout和JScrollPane:如何减少行高?

请参阅下面一个使用GridBagLayout的简单测试代码(第2行有2行,第2行,第1行有1个组件)。 虽然我已经指定第一行的weighty为0.01,第二行的weighty为1,但屏幕上的比率看起来更像是0.3和0.7。 似乎第一行的高度resize,以便整个textarea适合它。 如何减小第一行的高度,以便显示JScrollPane的滚动条? public class Test { public static void main(String… args) { String text = “text\n\n\n\n\n\n\n\ntext”; JFrame frame = new JFrame(); JTextArea area; JScrollPane pane; JPanel desktop = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; c.gridx = 0; c.gridy = 0; c.weightx = 0.25; c.weighty = 0.05; area = […]

Java GridBagLayout:使组件对齐到左侧

我使用GridBagLayout进行此布局: public class Example extends JFrame { public Example() { Border outline = BorderFactory.createLineBorder(Color.black); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); JPanel pane = new JPanel(gbl); gbc.weighty = 1.0; gbc.weightx = 1.0; JLabel unitLbl = new JLabel(“Unit”); unitLbl.setBorder(outline); gbc.gridx = 0; gbc.gridy = 0; gbc.ipadx = 30; gbc.ipady = 10; gbl.setConstraints(unitLbl, gbc); […]

GridBagLayout重量对齐

我是动态生成需要使用相对大小的布局,我发现不使用外部Java布局库的唯一方法是GridBagLayout的weightx和weighty。 在这一点上,它完全按照我的需要工作,只有一个小例外。 当我有一个包含两个JPanels的列,其空间分布分别为66.6%和33.3%,然后另一个列有3个JPanels,每个空间使用33.3%的空间,第一列的33.3%与第一列的33.3%不同占第二位的33.3%。 我需要它们完全一致。 不幸的是,这是我的第一篇文章,我无法发布任何图片,我希望我不会因为以下情况而遇到麻烦: 我想我知道问题是什么,在每个JPanel里面我有一个JLabel,因为weightx和weighty的定义是“Weights用于确定如何在列之间分配空间(weightx)和行之间(weighty) ”我想差异两个33.3%s之间的事实是第二列包含一个额外的JLabel。 在这个post中, StanislavL说“容器要求孩子们选择他们喜欢的大小”,所以,我想知道解决方案是否要覆盖JLabel的getPreferredSize方法。 我不确定这样做会有多“脏”,我非常感谢您解决这个问题的建议。 提前致谢! 迭戈

GridBagLayout:如何填充所有空格

我有一个JFrame包含一些使用gridBagLayout(3行,一列)的JPanel。 那是我的代码: Container main_container = getContentPane(); GridBagLayout layout = new GridBagLayout(); main_container.setLayout(layout); GridBagConstraints c = new GridBagConstraints(); StatoMagazzini jpanel_stato_magazzini = new StatoMagazzini(); c.gridx = 1; c.gridy = 2; c.fill = GridBagConstraints.BOTH; layout.setConstraints(jpanel_stato_magazzini, c); AcquistoLotto jpanel_acquisto = new AcquistoLotto(i, jpanel_stato_magazzini); c.gridx = 1; c.gridy=1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.FIRST_LINE_START; layout.setConstraints(jpanel_acquisto, c); ButtonPanel jpanel_button_panel = new […]

为什么GridBagLayout将我的组件放在中心而不是放在角落?

到目前为止,我设法尽可能避免使用GridBagLayout (手动代码),但这次我无法避免它,我正在阅读SUN的教程GridBagLayout到目前为止它还不顺利。 我想我很想念一些东西。 例如,我尝试以下代码(类似于SUN的post中的代码): public class MainFrame extends JFrame { public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainFrame frame = new MainFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame */ public MainFrame() { super(); setBounds(100, 100, 500, 375); […]

当文本发生变化时,如何阻止JLabel更改其大小?

我在代码中生成一些JComponents并使用GridBag布局来排列它们。 我的布局由12行和3列组成,每行包含一个JSlider,一个JCheckBox和一个JLabel。 这是我用来生成UI的代码: final int NUM_MOTORS = 12; // This is the panel I’m adding the components to. pnlMotorSliders.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); for (int i = 0; i < NUM_MOTORS; ++i) { c.gridy = i; // Create the slider JSlider slider = new JSlider(SwingConstants.HORIZONTAL, 10, 4085, 10); c.fill = GridBagConstraints.HORIZONTAL; c.gridx = […]