标签: layout-manager

java.awt.AWTError:无法共享BoxLayout

我在设置布局之前初始化了MotePanel,Command Panel和LEDPanel,那么我是如何得到这个例外的.

请帮忙.

Exception in thread "main" java.awt.AWTError: BoxLayout can't be shared
    at javax.swing.BoxLayout.checkContainer(BoxLayout.java:462)
    at javax.swing.BoxLayout.invalidateLayout(BoxLayout.java:246)
    at javax.swing.BoxLayout.addLayoutComponent(BoxLayout.java:279)
    at java.awt.Container.addImpl(Container.java:1107)
    at java.awt.Container.add(Container.java:974)
    at javax.swing.JFrame.addImpl(JFrame.java:556)
    at java.awt.Container.add(Container.java:377)
    at Window.<init>(Window.java:54)
Run Code Online (Sandbox Code Playgroud)
public class Window extends JFrame{
    private JPanel MotePanel;
    private JPanel LEDPanel;
    private JPanel CommandPanel;
    private JCheckBox motes[];
    private JRadioButton Leds[];

    public Window(){
        this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));
        this.setTitle("Sensor Networks Lab");
        this.setSize(300, 200);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        MotePanel = new JPanel();
        LEDPanel = new JPanel();
        CommandPanel = new JPanel();
        motes = new JCheckBox[10];
        Leds = new JRadioButton[3];


        MotePanel.setLayout(new …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager

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

GroupLayout一次只能与一个容器一起使用

不确定为什么会出现这个错误.我正在使用GroupLayout,因为我希望它为我做间距,并将在未来向框架添加更多面板.下面是堆栈跟踪.

Exception in thread "main" java.lang.IllegalArgumentException: GroupLayout can only be used with one Container at a time
    at javax.swing.GroupLayout.checkParent(Unknown Source)
    at javax.swing.GroupLayout.invalidateLayout(Unknown Source)
    at java.awt.Container.invalidate(Unknown Source)
    at java.awt.Component.addNotify(Unknown Source)
    at java.awt.Container.addNotify(Unknown Source)
    at javax.swing.JComponent.addNotify(Unknown Source)
    at java.awt.Container.addNotify(Unknown Source)
    at javax.swing.JComponent.addNotify(Unknown Source)
    at java.awt.Container.addNotify(Unknown Source)
    at javax.swing.JComponent.addNotify(Unknown Source)
    at javax.swing.JRootPane.addNotify(Unknown Source)
    at java.awt.Container.addNotify(Unknown Source)
    at java.awt.Window.addNotify(Unknown Source)
    at java.awt.Frame.addNotify(Unknown Source)
    at java.awt.Window.pack(Unknown Source)
    at client.AlternateGUI.drawGui(AlternateGUI.java:54)
    at client.AlternateGUI.main(AlternateGUI.java:24)
Run Code Online (Sandbox Code Playgroud)

这是代码:

package client;

import java.awt.Component;*

public class AlternateGUI {
    private JList people;
    private DefaultListModel …
Run Code Online (Sandbox Code Playgroud)

java swing exception layout-manager grouplayout

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

最佳实践指南:秋千

有没有人知道Swing相关的GUI指南 - 特别是关于如何设计Swing应用程序以及我应该使用哪些组件?我不是在寻找官方标准,而是我可以用来为我的项目设定一个好标准的实用技巧.

我自己没有太多使用Swing.当然,使用GUI设计器单击GUI并不是什么大问题.不过,我想从有Swing经验并知道应该避免的人那里获得一些见解.最近的摇摆(在Java 6-10中)得到了不错的改变.因此目前没有太多具体的标准化.

java swing layout-manager ui-guidelines

11
推荐指数
1
解决办法
6901
查看次数

为什么setLocation()没有移动我的标签?

我有以下代码,我尝试JLabel在一个自定义位置JFrame.

public class GUI extends JFrame 
{

    /**
     * 
     * @param args
     */
    public static void main(String args[]) 
    {
        new GUI();
    }
    /**
     * 
     */
    public GUI() 
    {
        JLabel addLbl = new JLabel("Add: ");
        add(addLbl);
        addLbl.setLocation(200, 300);
        this.setSize(400, 400);

        // pack();
        setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎没有移动到我想要的地方.

java swing layout-manager

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

是否没有内置的C#GUI布局?

我已经习惯了Java中的GUI框架以及QT GUI框架,我已经习惯了各种布局管理器.C#似乎没有内置布局管理器,或者我错过了什么?

2年后编辑

我只是想向这个问题的任何读者指出,在后视中,我的问题是错误的.通过适当地锚定和对接子控件,需要Java和QT4的布局管理器几乎不存在.

c# layout layout-manager

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

将多个jPanel添加到jFrame

我想并排添加两个jPanel到JFrame.两个框是jpanels,外框是jframe在此输入图像描述

我有这些代码行.我有一个名为seatinPanel的类,它扩展了JPanel,在这个类中我有一个构造函数和一个名为utilityButtons的方法,它返回一个JPanel对象.我希望utilityButtons JPanel在右侧.我这里的代码只在运行时显示utillityButtons JPanel.

public guiCreator()
    {
        setTitle("Passenger Seats");
        //setSize(500, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();

        seatingPanel seatingPanel1 = new seatingPanel();//need to declare it here separately so we can add the utilityButtons
        contentPane.add(seatingPanel1); //adding the seats
        contentPane.add(seatingPanel1.utilityButtons());//adding the utility buttons

        pack();//Causes this Window to be sized to fit the preferred size and layouts of its subcomponents
        setVisible(true);  
    }
Run Code Online (Sandbox Code Playgroud)

java swing jpanel layout-manager

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

Java Swing JFrame布局

我刚刚编写了一个简单的代码,我希望在主框架上显示一个文本字段和一个按钮,但是在运行之后,我看到的是文本字段.

如果我在文本字段后面写了按钮的代码,那么只显示按钮.

知道为什么吗?

    JFrame mainframe=new JFrame();
    mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainframe.setBounds(0,0,200,200);
    JButton jb=new JButton();
    jb.setText("Leech");
    mainframe.add(jb);
    JTextField link=new JTextField(50);
    mainframe.add(link);
    mainframe.pack();
    mainframe.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

java swing jframe jbutton layout-manager

11
推荐指数
3
解决办法
4万
查看次数

如何让GridBagLayout尊重按钮或面板的最小尺寸?

在下面的GridBagLayout代码中,我希望在调整JFrame的大小以使其更小时,可以遵守JButton btn2的指定最小大小.但是当我使JFrame变小时,btn2会小于其最小尺寸然后消失.

有人能指出我正在做错的方向吗?也许我必须设置包含按钮的JPanel的最小大小?

任何帮助表示赞赏,谢谢!

    JFrame frame = new JFrame();
    frame.setSize(400,300);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setMinimumSize(new Dimension(400,300));
    panel.setBackground(Color.RED);

    panel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = null;

    JButton btn1 = new JButton("btn1");
    btn1.setPreferredSize(new Dimension(150,50));
    btn1.setMinimumSize(new Dimension(150,50));
    gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 
            GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
            new Insets(0,0,0,0), 0, 0);
    panel.add(btn1, gbc);

    JButton btn2 = new JButton("btn2");
    btn2.setPreferredSize(new Dimension(150,150));
    btn2.setMinimumSize(new Dimension(150,150));
    gbc = new GridBagConstraints(1, 0, 1, 1, 1.0, 1.0, 
            GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
            new Insets(0,0,100,100), 0, 0);
    panel.add(btn2, gbc);

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

java swing layout-manager gridbaglayout

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

如何使用流布局删除JPanel之间的填充?

这是我的java应用程序GUI的一部分,我有一个问题.

在此输入图像描述

这个GUI包含的是一个蓝色的JPanel(容器),默认的FlowLayout作为LayoutManager,它包含一个Box,其中包含两个JPanels(用于删除水平间距,或者我可以使用setHgaps为零而不是Box),每个包含一个JLabel的.

这是我创建GUI部分的代码.

  private void setupSouth() {

    final JPanel southPanel = new JPanel();
    southPanel.setBackground(Color.BLUE);

    final JPanel innerPanel1 = new JPanel();
    innerPanel1.setBackground(Color.ORANGE);
    innerPanel1.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
    innerPanel1.add(new JLabel("Good"));

    final JPanel innerPanel2 = new JPanel();
    innerPanel2.setBackground(Color.RED);
    innerPanel2.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
    innerPanel2.add(new JLabel("Luck!"));

   final Box southBox = new Box(BoxLayout.LINE_AXIS);
  southBox.add(innerPanel1);
  southBox.add(innerPanel2);

    myFrame.add(southPanel, BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何摆脱外部JPanel(蓝色)和Box之间的垂直填充?

我知道这是填充因为我读到了边距和填充之间的差异?"padding =元素从文本到边框周围(内部)的空间."

这不起作用,因为这必须与组件之间的间隙(空间)有关.-如何在MigLayout中删除JPanel填充?

我试过这个,但它也没用.Java中的JPanel Padding

java swing padding jpanel layout-manager

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

JavaScript布局管理器?

我正在寻找一个支持灵活布局的JavaScript布局管理器:嵌套,调整大小,拆分器,可折叠面板等.

我见过ExtJS和Dojo,但我想知道是否有任何轻量级变体在这方面表现出色......

谢谢!

javascript frameworks javascript-framework layout-manager

10
推荐指数
1
解决办法
9048
查看次数