标签: gridbaglayout

GridBagLayout:如何防止不可见的组件崩溃

当使GridBagLayout管理的布局的各个组件不可见时,布局中其余组件的排列会不断变化.GridBagLayout似乎使用不可见组件"折叠"单元格,导致其他组件更改位置.这是一种非常烦人的行为,我一直在寻找一种方法来阻止它这样做.

我尝试过的一种方法是在相同的单元格中添加一个间隔符,其固定大小等于可能隐藏的组件的首选大小,但如果要改变的首选大小,则会遇到很多麻烦保持垫片同步.有没有更好的办法?

实际上,如果GridBagLayout真的完全忽略了具有不可见组件的单元格,它就不会那么糟糕了,但它仍然考虑了单元格的插图,所以如果你有一个输入字段的布局并使用插图整齐地排列它们两者之间的间隙,然后隐藏中间的一个组件将其从布局中移除但留下间隙,这通常意味着周围的组件一起流动,但它们之间有一个丑陋的双宽间隙......

java gridbaglayout

7
推荐指数
2
解决办法
4729
查看次数

JSeparator不会显示GridBagLayout

我想使用GridBagLayout在两个组件之间添加一个垂直JSeparator.我的代码如下:

public MainWindowBody(){
    setLayout(new GridBagLayout());

    JPanel leftPanel = new InformationPanel();
    JPanel rightPanel = new GameSelectionPanel();

    JSeparator sep = new JSeparator(JSeparator.VERTICAL);
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.NORTH;

    add(leftPanel,gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.VERTICAL;

    add(sep,gbc);

    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.NONE;

    add(rightPanel,gbc);
}
Run Code Online (Sandbox Code Playgroud)

但JSeperator没有显示任何想法?

谢谢

java user-interface swing gridbaglayout

7
推荐指数
2
解决办法
1万
查看次数

如何使用GridBagLayout在JPanel中对齐组件中心?

当我尝试对齐我的组件时,它会左侧或右侧.

所以我只是希望解决方案摆脱这个问题,并告诉我如何将面板的大小设置为400 x 350像素.

在此输入图像描述

这里是我的代码.... titleLabelResultLabel应在中心对齐

public TimeGui() {

    layout = new GridBagLayout();
    setSize(400, 350);  //**Its not working**
    setBackground(Color.LIGHT_GRAY);
    setBorder(BorderFactory.createLineBorder(Color.BLACK));
    setBorder(new TitledBorder(new EtchedBorder(), "Time Conversion") );

    setLayout(layout);
    layoutConstraints = new GridBagConstraints();       
    textField1 = new JTextField(10);
    textField2 = new JTextField(10);

    String[] names1 = {"Seconds", "Minutes", "Hours", "Days", "Weeks"};


    comboBox1 = new JComboBox<>(names1);
    comboBox2 = new JComboBox<>(names1);

    titleLabel = new JLabel("Time Conversion Unit", JLabel.CENTER);
    resultLabel = new JLabel("Result Label");
    equalLabel = new JLabel("=");

    convertButton = new JButton("Convert");


    layoutConstraints.fill = …
Run Code Online (Sandbox Code Playgroud)

java swing gridbaglayout

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

如何在Java中创建一个带有连接按钮的ButtonGroup?

我目前正在尝试创建一组切换按钮,这些按钮类似于Eclipse的格式化程序首选项中使用的按钮:

Eclipse的Formatter首选项

目前我已通过以下方式尝试此操作:

public class Exercise extends JFrame {

    private String[] buttonNames = {"A", "B", "C", "D", "E"};

    Exercise() {
        final JPanel topPanel = new JPanel();
        topPanel.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        int tabCount = 0;
        final ButtonGroup topButtonGroup = new ButtonGroup();
        for (String buttonName : buttonNames) {
            JToggleButton tabButton = new JToggleButton(buttonName);
            topButtonGroup.add(tabButton);
            c.fill = GridBagConstraints.HORIZONTAL;
            c.insets = new Insets(0, -6, 0, -7); // Questionable line
            c.gridx = tabCount;
            c.gridy = 0;
            topPanel.add(tabButton, c);
            tabCount++;
        }
        this.add(topPanel);
        this.setVisible(true);
        this.pack(); …
Run Code Online (Sandbox Code Playgroud)

java layout swing gridbaglayout jtogglebutton

7
推荐指数
2
解决办法
985
查看次数

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;
        gridBagConstraints.weightx = 0.0;
        gridBagConstraints.weighty = 0.0;
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        panel1.add(label, gridBagConstraints);

        String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
        JComboBox petList …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager gridbaglayout

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

SetVisible(false)更改我的Panel中组件的布局

当我将其中一个子面板设置为不可见时,如何使主面板中的子面板保持原样?

我看起来像:

[ (Panel1) (Panel2) (Panel3) (Panel4) ]
Run Code Online (Sandbox Code Playgroud)

当我这样做panel3.setVisible(false),然后看起来像:

[      (Panel1) (Panel2) (Panel4)     ]
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像:

[ (Panel1) (Panel2)          (Panel4) ]
Run Code Online (Sandbox Code Playgroud)

我正在使用GridBagLayout,我的mainPanel声明如下所示:

final JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
Run Code Online (Sandbox Code Playgroud)

我添加了一个新的面板,如:

final JTextField valueTextField = new JTextField();
valueTextField.setPreferredSize(new Dimension(80, 25));
valueTextField.setName("Value");
c.gridx =0;
panel.add(valueTextField, c);
Run Code Online (Sandbox Code Playgroud)

如果需要我会提供更多代码,我不关心我使用哪种布局,只要它能得到我想要的东西.

java swing jpanel gridbaglayout

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

使2个JButton大小相等

我有两个JButton文本"Ok"和"Cancel".我用它GridBagLayout来对齐它们JDialog.我把锚设置为GridBagConstraints.CENTER.由于文本"Ok"和"Cancel"中字符数的不同,按钮的大小不同.如何正确对齐它们,使它们每个都具有相同的大小.我试过以下但没有用.

okayButton.setSize(cancelButton.getSize());
Run Code Online (Sandbox Code Playgroud)

java swing jbutton layout-manager gridbaglayout

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

如何使用GridBagLayout定位组件?

我是Java编程的新手,我正在尝试创建一个包含两个按钮和一个文本区域的窗口,如下图所示.我遇到的问题是定位组件.我尝试使用GridLayout并将窗口分成9行和16个单元格,但后来发现我无法使组件占用多于一个单元格.我知道我应该使用,GridBagLayout但我不知道究竟是怎么回事.帮助将不胜感激.:)

java layout user-interface swing gridbaglayout

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

在java中使用GridBagLayout时设置最大组件大小

我的问题如下:我正在尝试使用窗口调整JScrollPane大小,水平达到一定大小,它应该停止尝试随窗口一起增长.

我可以用GridBagLayout做到吗?如果是这样,怎么样?

java user-interface swing gridbaglayout

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

GridBagLayout:如何设置固定列宽?

我一直试图在下面的代码中设置固定的列宽度...事情是,当我在左边的面板上添加标签时,宽度会自动增加...我希望列宽度要固定......

有人可以帮我吗?

这是代码:

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Point;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import …
Run Code Online (Sandbox Code Playgroud)

java swing awt gridbaglayout

6
推荐指数
1
解决办法
2万
查看次数