标签: layout-manager

如何将JLabel定位到Java GUI上的绝对位置

我有很多JLabels(包括ImageIcons)JPanel.

JPanel只是GUI上的一个面板; 还有很多其他面板.

我想将标签放在JPanel容器上的精确像素坐标上.

如果不使用我怎么能这样做GroupLayout

java user-interface swing layout-manager

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

为什么需要使用BoxLayout调用setLayout?

大多数布局管理器都没有参数构造函数(也就是说,你可以创建一个FlowLayout new FlowLayout (),一个GridLayout new GridLayout (),一个GridBagLayout new GridBagLayout ()等).但是,BoxLayout要求您传递将要管理的容器和应该布置组件的轴.

我的问题是:既然你已经告诉布局管理器要布局哪个组件,你为什么要写

BoxLayout bl = new BoxLayout(myPanel, BoxLayout.Y_AXIS);
myPanel.setLayout(bl);
Run Code Online (Sandbox Code Playgroud)

而不只是第一行?

我参加了一个快速浏览BoxLayout源代码,看到的构造我使用(178-185线)不拨打电话到target.setLayout(this)的那种或任何东西.看起来添加它真的很简单.有没有理由为什么它不包含在Swing库中?

如果重要,我正在使用

java版本1.7.0

Java(TM)SE运行时环境(版本1.7.0-b147)

在Win7Pro上.

谢谢!


SSCCE:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;

public class BoxLayoutSSCCE extends JFrame {

    // Change this to see what I mean
    public static final boolean CALL_SET_LAYOUT = true;

    public BoxLayoutSSCCE () {
        super("Box Layout SSCCE");
        JPanel panel = new JPanel();
        BoxLayout bl = new …
Run Code Online (Sandbox Code Playgroud)

java layout swing layout-manager boxlayout

8
推荐指数
1
解决办法
3169
查看次数

如何使用Java GridLayout使用边距和填充

如何让JLabel在框架侧面显示齐平?我在使用GridLayout或BoxLayout时遇到同样的问题.

以下是发生这种情况的示例:

JPanel content = new JPanel();
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
content.add(new JLabel("Hello World"));
Run Code Online (Sandbox Code Playgroud)

CSS具有边距和填充的概念.Java有类似的吗?

我仍然希望左对齐但边缘和标签之间有几个像素的空间.

java layout swing awt layout-manager

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

什么是最好的布局管理器?

在此输入图像描述

我想做一个看起来像上面的gui.现在我有一个面板,它将保存名称标签,名称文本字段,brith日期标签和生日文本字段.我的问题是什么是最好的布局管理器在面板上使用,以便"名称组件"行(标签+文本字段)和"出生日期组件"行(标签+文本字段),将垂直均匀地分布在小组.

我想过使用流布局,但这会导致两行组件之间没有间隙.我想过使用网格布局,但我不知道两行组件之间的间隙大小.

一个更复杂的方法......我考虑将名称标签和文本字段放在一个面板中,并将出生日期标签和文本字段放在另一个面板中,然后使基本面板边框布局和设置名称为北,生日日期为南. ..但是我仍然需要确保名称组件在名称面板中垂直居中,而birthdate组件在出生日期面板中垂直居中.

任何帮助表示赞赏.目标是确保名称组件行和出生日期组件行垂直展开,名称组件垂直居中于上半部分,出生日期组件垂直居中于下半部分.如果有什么问题让人感到困惑,请告诉我我会尝试改写以便更好地理解.

我正在使用严格的Java swing与eclipse,没有GUI构建器或类似的东西.

java swing layout-manager

8
推荐指数
2
解决办法
9416
查看次数

为什么我的UI在浏览器中运行时会丢失格式而在我的计算机上运行(Java Swing)?

对于我的CSE 205(Java编程2)类,我们必须设计一个非常简单的GUI小程序.我对Swing非常熟悉,我已经将它用于我自己的一些项目.我设计的程序几乎没有问题,从Eclipse运行时,它在我的计算机上看起来很完美:

在此输入图像描述

但是当我在网上提交它,它在浏览器中运行时,UI会严重痴迷,返回默认值:

在此输入图像描述

我已经习惯了使用GridBagLayout,因为它很简单.这就是我在这里使用的.CreatePanel和SelectPanel类(如第一张图片中所示)都扩展了JPanel(根据我的教授).我设置每个使用:

this.setLayout(new GridBagLayout());
Run Code Online (Sandbox Code Playgroud)

以及每个组件:

//Call the method addItem() to add the create button to the panel
addItem(this, createB,0,2,2,1,defaultInset,GridBagConstraints.CENTER);



 //-------
    public void addItem(JPanel p, JComponent c, int x, int y, int width, int height, int[] inset, int align)
      {
            GridBagConstraints gc = new GridBagConstraints();
            gc.gridx = x;
            gc.gridy = y;
            gc.gridwidth = width;
            gc.gridheight = height;
            gc.weightx = 0;
            gc.weighty = 0;
            gc.insets = new Insets(inset[0],inset[1],inset[2],inset[3]);
            gc.anchor = align;
            gc.fill = GridBagConstraints.NONE;
            p.add(c, gc);
        }
Run Code Online (Sandbox Code Playgroud)

任何人都对可能发生的事情有任何想法?考虑到超过一半的时间花在让布局看起来正确,我想要一个简单的修复.如果需要,我可以发布更多代码.谢谢你的任何建议.

- 编辑 …

java swing awt layout-manager gridbaglayout

8
推荐指数
1
解决办法
147
查看次数

无法将JTextField添加到JFrame

我无法添加JTextFieldJFrame.我的JFrame包含a JLabel和a JTextField.首先,我添加了JLabel,它正在工作.这是代码.

private static void createandshowGUI()
     {

    JFrame frame =new JFrame("HelloSwing");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setBackground(Color.red);
    frame.setSize(200,200);

    JLabel label=new JLabel("New To Java!!");
    frame.getContentPane().add(label);
    frame.setVisible(true);
}
public static void main(String[] args) {
    createandshowGUI();}   //and it shows the output like below .
Run Code Online (Sandbox Code Playgroud)

框架有JLabel

然后我添加了JTextField.

    JLabel label=new JLabel("New To Java!!");
    frame.getContentPane().add(label);

   JTextField jtf=new JTextField();
   frame.getContentPane().add(jtf);

    frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

但后来它显示了这样的输出.

具有JLabel和JTextField的框架

请有人帮我解决这个问题.我可以向JFrame添加多个组件吗?因为我是Java的新手,我在框架,ContentPane和Layouts之间存在混淆.

java swing jframe jtextfield layout-manager

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

如何将JLabel对齐到JPanel的左侧?

我想把我的JLabel对齐到左边.

    String lText = "<html><b><font color = white face = comic sans ms size = 20>mybook</font></b></html>";
    JLabel label = new JLabel(lText);
    label.setBorder(new EmptyBorder(25,0,25,500));
Run Code Online (Sandbox Code Playgroud)

我尝试使用EmptyBorder做它,但它没有正确对齐.我正在使用FlowLayout

java swing jlabel layout-manager flowlayout

8
推荐指数
2
解决办法
3万
查看次数

如何使用BoxLayout在容器内设置组件大小

面对使用BoxLayout的问题

在我的示例中,我尝试降低文本字段的高度并更改按钮的宽度(如图中的绿色标记所示).我知道setPrefferedSize()和setMaximumSize()技术,但它没有按预期工作.行添加(Box.createHorizo​​ntalGlue())也没有帮助.

谢谢你的想法

public class Testy extends JPanel {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                constructGUI();
            }
        });
    }

    private static void constructGUI() {
        JFrame frame = new JFrame("Testy");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel();
        centerPanel.setBackground(Color.DARK_GRAY);
        centerPanel.setPreferredSize(new Dimension(100, 400));
        frame.add(centerPanel, BorderLayout.CENTER);

        Testy eastPanel = new Testy();
        frame.add(eastPanel, BorderLayout.EAST);

        frame.pack();
        frame.setVisible(true);
    }

    public Testy() {
        setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

        JButton button = new JButton("Button ...... 1");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        button = new JButton("Button 2"); …
Run Code Online (Sandbox Code Playgroud)

java layout swing layout-manager boxlayout

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

有没有办法强制GridLayout留下空单元格?

我有一个JTabbedPane,其中2个JPanels设置为GridLayout(13,11).第一个JPanel有足够的单元格填充它离开空单元格. 在此输入图像描述

第二个JPanel填充的单元格明显更少,这导致每个按钮被拉伸以填满整行. 在此输入图像描述

有没有办法让GridLayout尊重空单元格,所以两个JPanels中的按钮大小相同?

java swing jpanel layout-manager grid-layout

8
推荐指数
3
解决办法
2万
查看次数

在调整大小时,gridbaglayout的组件是否可以填充父框架?

我有一个用JFrameroot JPanel实例化的根GridBagLayout.在运行时,面板被填充有基于某些描述的部件,并且宽度,高度以及x,y COORDS中给出的描述中,以与被使用gridwidth,gridheight,gridxgridy在字段GridBagConstraints.组件本身也可以JPanel是带有自己子组件的组件GridBagConstraints,GUI在树中描述,因此Frame是递归填充的.

我遇到的问题是,当调整框架大小时,内部组件不会被拉伸以填充其给定的宽度和高度.我已经给出了下面的布局代码示例,并附有截图.

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.util.*;

public class GridBagTest extends JPanel {

    private final GridBagConstraints gbc = new GridBagConstraints();

    public GridBagTest(){

        setLayout(new GridBagLayout());
        add(gbcComponent(0,0,1,2), gbc);    
        add(gbcComponent(1,0,2,1), gbc);            
        add(gbcComponent(1,1,1,1), gbc);            
        add(gbcComponent(2,1,1,1), gbc);            

    }

    //Returns a JPanel with some component inside it, and sets the GBC fields
    private JPanel gbcComponent(int x, int y, int w, int h){ …
Run Code Online (Sandbox Code Playgroud)

java swing resize layout-manager gridbaglayout

8
推荐指数
1
解决办法
8291
查看次数