Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未设置JPanel大小_Java_Swing_User Interface_Layout Manager - Fatal编程技术网

Java 未设置JPanel大小

Java 未设置JPanel大小,java,swing,user-interface,layout-manager,Java,Swing,User Interface,Layout Manager,我目前正在开发一个irc机器人,今天我想为它创建一个GUI 我正在尝试创建一个包含左右两部分的列布局。 左侧显示控制台输出,右侧包含所有控件(连接通道、命令等) 我在创建这两个列时遇到问题。我有一个JPanel,它是窗口的整个宽度和高度,有10个像素的边框,然后我有两个面板;左和右 由于某种原因,左右面板占据了整个窗口的大小,而右面板重叠了所有部分 下面是一个示例图片: 白色是右侧面板,它的大小应该只有一半,左侧有一个相同但黑色的面板 这是我当前的代码,如果它凌乱,很抱歉,这是整个Swing G

我目前正在开发一个irc机器人,今天我想为它创建一个GUI

我正在尝试创建一个包含左右两部分的列布局。 左侧显示控制台输出,右侧包含所有控件(连接通道、命令等)

我在创建这两个列时遇到问题。我有一个JPanel,它是窗口的整个宽度和高度,有10个像素的边框,然后我有两个面板;左和右

由于某种原因,左右面板占据了整个窗口的大小,而右面板重叠了所有部分

下面是一个示例图片: 白色是右侧面板,它的大小应该只有一半,左侧有一个相同但黑色的面板

这是我当前的代码,如果它凌乱,很抱歉,这是整个Swing GUI的新代码。。谢谢你的帮助

package tk.TaylerKing.GribbyBot;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.HashMap;

import javax.swing.BorderFactory;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import com.alee.laf.WebLookAndFeel;
import com.alee.laf.menu.WebMenuBar;
import com.alee.laf.menu.WebMenuItem;
import com.alee.laf.panel.WebPanel;
import com.alee.laf.rootpane.WebFrame;

public class GribbyBot extends WebFrame {
    private static final long serialVersionUID = 4641597667372956773L;
    public static HashMap<String, ArrayList<String>> connections = new HashMap<String, ArrayList<String>>();
    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel(WebLookAndFeel.class.getCanonicalName());
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                GribbyBot gb = new GribbyBot();
                gb.setVisible(true);
            }
        });
    }
    public GribbyBot(){
        WebPanel panel = new WebPanel();
        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        panel.setPreferredSize(new Dimension(780, 580));

        WebMenuBar menu = new WebMenuBar();
        WebMenuItem file = new WebMenuItem("Exit");
        file.setMnemonic(KeyEvent.VK_E);
        file.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                System.exit(0);             
            }
        });
        menu.add(file);
        setJMenuBar(menu);

        WebPanel left = new WebPanel();
        left.setPreferredSize(new Dimension(380, 580));
        left.setBackground(Color.BLACK);

        WebPanel right = new WebPanel();
        right.setPreferredSize(new Dimension(380, 580));
        right.setBackground(Color.WHITE);

        add(panel);
        panel.add(left);
        panel.add(right);
        setTitle("GribbyBot");
        setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
    }
}
包tk.taylelking.GribbyBot;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.util.ArrayList;
导入java.util.HashMap;
导入javax.swing.BorderFactory;
导入javax.swing.SwingUtilities;
导入javax.swing.UIManager;
导入com.alee.laf.WebLookAndFeel;
导入com.alee.laf.menu.WebMenuBar;
导入com.alee.laf.menu.WebMenuItem;
导入com.alee.laf.panel.WebPanel;
导入com.alee.laf.rootpane.WebFrame;
公共类GribbyBot扩展了WebFrame{
私有静态最终长serialVersionUID=4641597667372956773L;
public static HashMap connections=new HashMap();
公共静态void main(字符串[]args)引发异常{
UIManager.setLookAndFeel(WebLookAndFeel.class.getCanonicalName());
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
GribbyBot gb=新的GribbyBot();
gb.setVisible(真);
}
});
}
公共灰熊{
WebPanel=新WebPanel();
panel.setBorder(BorderFactory.createEmptyByOrder(10,10,10,10));
面板。设置首选尺寸(新尺寸(780580));
WebMenuBar菜单=新建WebMenuBar();
WebMenuItem文件=新的WebMenuItem(“退出”);
setMnemonic文件(KeyEvent.VK_E);
addActionListener(新ActionListener()){
已执行的公共无效操作(操作事件e){
系统出口(0);
}
});
菜单.添加(文件);
setJMenuBar(菜单);
WebPanel left=新WebPanel();
左。设置首选尺寸(新尺寸(380580));
左。背景(颜色。黑色);
WebPanel right=新建WebPanel();
右。设置首选尺寸(新尺寸(380580));
右。挫折背景(颜色。白色);
添加(面板);
面板。添加(左);
面板。添加(右);
片名(“灰熊”);
设置大小(800600);
setLocationRelativeTo(空);
setDefaultCloseOperation(关闭时退出);
可设置大小(假);
}
}
另一方面,所有以“Web”为前缀的变量与Swing相同,但它是一个自定义GUI。

重写而不是使用
setPreferredSize()

阅读更多

如果在紧急情况下非常需要,请尝试以下方法:

示例代码:

final JPanel panel = new JPanel(){
    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        // your custom painting code here
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(40, 40);
    }
};

为什么要使用
setPreferredSize()
方法,而您可以使用任何适当的布局(如
BoxLayout
GridLayout
BorderLayout
等)轻松实现此设计

了解更多关于布局的信息

编辑
try
JPanel panel=newjpanel(newgridlayout(1,2))

在这种情况下,发布最小可测试代码。我不知道这里什么是
WebFrame
WebPanel
?似乎是外部GUI的问题,我现在已经解决了。谢谢我已经更新了我的帖子。删除所有
setPreferredSize()
方法后尝试此方法。