- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个具有多个聊天的消息传递程序。在聊天窗口的一侧有一个 JPanel,其中包含用于切换聊天的所有按钮的列表数组。我无法使侧面板中的所有按钮具有相同的宽度,无论它们包含什么。但无论我尝试什么似乎都不起作用,我正在寻求一些帮助。请您解释一下该代码的作用以及如何使用它,以便我下次学习。抱歉,如果注释不是最好的,那么这是一项正在进行的工作,因为我会等到代码工作后再添加详细注释,否则我会不断更改它们。 :(
这就是没有任何聊天的情况:
这是多个聊天的情况,您可以看到宽度变化
以下是添加新用户时运行的代码:
public void newUser() {
JPanel dialogue = new JPanel();
dialogue.setLayout(new BoxLayout(dialogue, BoxLayout.Y_AXIS));
//Creating/adding dialogue components
JLabel Enter_ip = new JLabel("Enter the ip address");
JTextField Get_ip = new JTextField("");
dialogue.add(Enter_ip);
dialogue.add(Get_ip);
dialogue.add(Box.createHorizontalStrut(15));
JLabel Enter_name = new JLabel("Enter the user's name");
JTextField Get_name = new JTextField("");
dialogue.add(Enter_name);
dialogue.add(Get_name);
//Creating the dialogue box
JOptionPane.showConfirmDialog(null, dialogue, "New User", JOptionPane.OK_CANCEL_OPTION);
//Getting data from dialogue box
String ip = Get_ip.getText();
String name = Get_name.getText();
//Try connecting to other user here
//Adding user message data
int size = Users_Messages_Data.size();
Users_Messages_Data.add(new ArrayList());//New user
Users_Messages_Data.get(size).add(new ArrayList());//Messages
Users_Messages_Data.get(size).add(new ArrayList());//Details
Users_Messages_Data.get(size).get(1).add(name);
Users_Messages_Data.get(size).get(1).add(ip);
Users_Messages_Data.get(size).get(1).add("port number");
//adds new UserButton
int temp = users.size();
users.add(new JButton(Users_Messages_Data.get(size).get(1).get(0)));
users.get(temp).addActionListener(this);
users.get(temp).setSize(new Dimension(500, 500));
SelectUser.add(users.get(temp), gbc);
Messaging.revalidate();
pack();
}
这里是初始化方法:
public void MessagingGUI() {
//Creates JFrame and pane
Messaging = new JFrame();
Container pane = getContentPane();
JLabel info = new JLabel("29/07/2016 15:36");
//Creates user chats panel
SelectUser = new JPanel(new GridBagLayout());
gbc = new GridBagConstraints();
gbc.weightx = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridwidth = GridBagConstraints.REMAINDER;
SelectUser.setLayout(new BoxLayout(SelectUser, BoxLayout.Y_AXIS));
SelectUser.setSize(new Dimension(500, 500));
//Adds different chats
users = new ArrayList<JButton>();
int x;
for (x = 0; x < Users_Messages_Data.size(); x++) {
users.add(new JButton(Users_Messages_Data.get(x).get(1).get(0)));
users.get(x).addActionListener(this);
SelectUser.add(users.get(x), gbc);
}
JButton newUser = new JButton("+");
newUser.addActionListener(this);
SelectUser.add(newUser);
JScrollPane UserScroll = new JScrollPane(SelectUser,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
//Creates messages feed
JPanel Messages = new JPanel();
Messages.setLayout(new BoxLayout(Messages, BoxLayout.Y_AXIS));
AllMessages = new JTextArea(10, 30);
AllMessages.setBackground(Color.WHITE);
AllMessages.setEditable(false);
AllMessages.setBorder(BorderFactory.createLineBorder(Color.BLUE, 1));
JScrollPane MessageScroll = new JScrollPane(AllMessages,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
//Creates user text entry box
UserText = new JTextArea(5, 30);
//UserText.setLineWrap(true);
//UserText.setWrapStyleWord(true);
UserText.setBorder(BorderFactory.createLineBorder(Color.CYAN, 1));
UserText.setText("Enter Message. Press enter to send");
UserText.setFocusable(true);
UserText.addKeyListener(this);
UserText.setPreferredSize(new Dimension(5, 20));
//Adds all components to pane
Messages.add(info);
Messages.add(MessageScroll);
Messages.add(UserText);
pane.add(UserScroll, BorderLayout.WEST);
pane.add(Messages, BorderLayout.CENTER);
//JFrame setup
Messaging.setTitle("Messaging");
Messaging.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Messaging.setContentPane(pane);
Messaging.setVisible(true);
Messaging.setSize(400, 350);
Load_User(current_user);
}
最佳答案
首先,变量名称不应以大写字符开头。有些变量名称是正确的,有些则不正确。保持一致并遵循 Java 约定!!!
.I am having trouble getting all the buttons in the side panel to be the same width,
不要使用 BoxLayout。它不会自动在布局的相反轴上调整大小。
您可以使用:
GridLayout
使所有按钮具有相同的大小。 GridLayout 还将垂直填充该区域,这不是您想要的,因此您需要嵌套面板。因此,使用 BorderLayout
创建一个父面板。使用带有按钮的 GridLayout
将面板添加到此父面板的 BorderLayout.PAGE_START
。然后将 BorderLayout 面板添加到滚动 Pane 。
一个GridBagLayout
。您将需要使用“填充”约束来让组件填充单元格的宽度。
阅读 Layout Managers 上的 Swing 教程了解更多信息和示例。
或者也许另一种方法是使用 JList
来显示用户。
关于Java BoxLayout 使用全宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829699/
我有一个标题 1(#banner h1.index_banner_text),它需要始终位于距页面底部 20 像素和距页面左侧 570 像素的位置。如果调整窗口大小,我希望标题自然堆叠,但始终与页面底
这个问题已经有答案了: CSS responsive slanted edge (1 个回答) 已关闭 7 年前。 我想知道如何创建一个宽度为 100% 的 div,宽度为 300 像素,其中底部边框
我做了一个非常简单的水平全宽 Accordion ,但我遇到了一个错误 - 它的最后一部分在折叠过程中下降了。 这是我的代码:https://jsfiddle.net/trzxs3u1/ 它可能来自同
我有两张相同的图片。我几乎一直显示其中一张图像,唯一的异常(exception)是在 1001px - 1400px 的视口(viewport)中,我显示图像的裁剪版本。由于某种原因,company-
我的应用程序中有这个页面: http://actibities-uniongr.rhcloud.com/pages/view-demo 如果您将浏览器的窗口缩短到小于 1000 像素并水平滚动,您会看
这个问题在这里已经有了答案: How did YouTube create a fluid video player? (1 个回答) 关闭 5 天前。 我正在尝试在网页中全宽显示一个 vimeo
我是编码新手,我试图只在我的 homepage 中使用每个 fancybox全宽和响应式 ( eg ),但这些选项都没有完成这项工作(fitToView、autoSize 或 aspectRatio)
到目前为止,我已经在 Markdown 表格中获得了尽可能多的格式和居中文本,但是在控制相对于外部容器的表格尺寸方面我没有发现任何东西(至少除了当它太大时它会自动缩小的事实)换行文本。) 是否可以在
带有大屏幕的 Windows 版 Chrome 上的 Swiper 插件存在问题。它在幻灯片左侧留下空白,我创建了一支笔来演示这一点: https://codepen.io/anon/pen/BwMx
在我的 Windows 应用商店应用程序中,我只有一个 XAML 中的 WebView: 我想在不同的屏幕尺寸或方向上将宽度设置为最大可用值。 我试图获取砂砾本身的宽度来设置 WebVi
好吧,我开发了一个 HorizontalScrollView,里面有一些按钮。 我可以通过 getWidth() 获取此 HorizontalScrollView 的宽度。但这会返回显示的 H
我们实现了 Jcrop在我们的系统中,到目前为止它运行良好。但是我们最近发现了一个小问题: 场景 我们的网站允许用户上传他们公司的标志。我们的宽高比要求是 200/150,不幸的是,用户的公司 Log
我遇到一个问题,我的 UIImageView 使用以下约束跨越整个屏幕宽度。 将前导对齐到:Superview(等于:-20) 将尾部对齐到:Superview(等于:-20) Top Space t
我有这个标记: 和这个 css(我正在使用 Twitter Bootstrap): img { height: auto; max-width
谁能给我解释一下这个页面是如何运作的? http://wexley-demo.squarespace.com/ 我看到有javascript,但不明白。 这也是实现这种效果最简单的方法吗? – 缩放、
我正在研究这个 slider : http://codepen.io/anon/pen/viBHe 当您打开页面时, slider 获得屏幕的 100% 宽度,这很好用,也是我想要实现的,但问题是当您
我目前正在为单页网站制作剪切路径: http://grafomantestsite3.be/ 如您所见,这适用于 chrome,但不适用于 firefox、opera 等。 我做了一个代码笔来说明我的
代码如下: Overall Advance Rating(1 foodees rated) 这里也是在对图像进行评级后获得光标。我如何处理光标直到只有图像。我曾尝试使
我正在尝试制作一个与此页面中的菜单类似的 Bootstrap 菜单。https://makr.com/ 这就是我想出的,但我现在几乎卡住了。 如何使下拉文本显示在每个下拉按钮下方,就像在 https:
我在 div 中嵌入了一个 vimeo,它是视口(viewport)的全宽。该视频在几天内运行良好,但现在播放按钮(和所有其他按钮)完全没有响应。 我试过弄乱 z-index 但那不起作用。
我是一名优秀的程序员,十分优秀!