我正在尝试将内容添加到主面板,并将主面板添加到主滚动窗格。但是,将显示一个空对话框。
重要提示:它必须用JPanel和JScrollPane实现。。。
`setModal(true);
setTitle("Edit item");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setPreferredSize(new Dimension(400, 700));
JScrollPane mainScrollPane = new JScrollPane();
mainScrollPane.add(mainPanel);
setLayout(new BorderLayout());
add(mainScrollPane);
mainPanel.add(new JLabel("ID: "));
mainPanel.add(txtID = new JTextField(item.getID()));
mainPanel.add(new JLabel("Description: "));
mainPanel.add(txtDescription = new JTextField(item.getDescription()));
pack();
setVisible(true);`
谢谢各位
请提供一个最小的可复制示例。它可能如下所示:
MyFrame.java
import javax.swing.*;
import java.awt.*;
class Item {
String id;
String description;
Item(String id, String description) {this.id = id;this.description = description;}
String getId() {return id;}
String getDescription() {return description;}
}
public class MyFrame extends JFrame {
Item item = new Item("007", "Special watch");
public MyFrame() {
// setModal(true);
setTitle("Edit item");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setPreferredSize(new Dimension(400, 700));
mainPanel.add(new JLabel("ID: "));
mainPanel.add(new JTextField(item.getId()));
mainPanel.add(new JLabel("Description: "));
mainPanel.add(new JTextField(item.getDescription()));
/* From Oracle's documentation, see link below:
Creates a JScrollPane that displays the contents of the
specified component, where both horizontal and vertical
scrollbars appear whenever the component's contents are
larger than the view.
*/
JScrollPane mainScrollPane = new JScrollPane(mainPanel);
// Just to show the bars
mainScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
mainScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
getContentPane().add(mainScrollPane); // <- This makes it shine!
pack();
setVisible(true);
}
public static void main(String[] args) {
new MyFrame();
}
}
$ javac MyFrame.java
$ java MyFrame
等等瞧:
https://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html
重要提示:它必须用JPanel和JScrollPane实现。。。
JScrollPane mainScrollPane = new JScrollPane();
mainScrollPane.add(mainPanel);
您不应该将组件直接添加到滚动窗格中。相反,您需要将组件添加到滚动窗格的视口中。
这可以通过以下方式完成:
JScrollPane mainScrollPane = new JScrollPane(mainPaneol);
//mainScrollPane.add(mainPanel);
或
JScrollPane mainScrollPane = new JScrollPane();
//mainScrollPane.add(mainPanel);
mainScrollPane.setViewportView(mainPanel);
然后将滚动窗格添加到框架中,就像您的代码当前所做的那样。
注意:您不会注意到滚动窗格的用法,因为当前没有理由显示滚动条。因此,确实不需要使用滚动窗格,只需将面板直接添加到框架中即可。
我用的是Intellij IDEA Ultimate 2016.3.4。 文件/设置/插件/安装JetBrains插件…打开一个名为Browse JetBrains Plugins的窗口,但窗口的主要区域,应该是AFAIK列出JetBrains存储库中可用的插件,只显示“无显示”消息。 我在企业代理后面,所以我使用了HTTP代理设置...按钮 我做错了什么吗? (是的,我也知道有一个解决方法:我可
我在antoher的项目中有完全相同的代码,但它在这里继续崩溃。我有。我真的不确定问题出在哪里。我尝试过切换gradle版本,从切换到。不管怎样,一切都失败了
对话框的内容不是在页面最初可见,而是在用户操作时显示额外的信息。 Toasts Materialize 提供了非常简单的方法,来弹出一些信息,同时也不会让用户感到突兀。这些 Toasts 显示的位置和大小会随着你的设备的不同而改变。 在 JavaScript 中调用 Materialize.toast() 方法来使用。 // Materialize.toast(message, displayLe
对话框是一个现代GUI应用不可或缺的一部分。对话是两个人之间的交流,对话框就是人与电脑之间的对话。对话框用来输入数据,修改数据,修改应用设置等等。 输入文字 QInputDialog提供了一个简单方便的对话框,可以输入字符串,数字或列表。 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In this
打开或保存文件,弹出警告等对话框 进程: 主进程 选择多个文件和目录的对话框: 1 const {dialog} = require('electron') 2 console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) Copied! 对话框默认是在主线程中
显示用于打开和保存文件、警报等的本机系统对话框。 线程:主线程 显示用于选择多个文件和目录的对话框的示例: const { dialog } = require('electron') console.log(dialog.showOpenDialog({ properties: ['openFile', 'openDirectory', 'multiSelections'] })) 这个对话框是