Java 向JDialog添加JScrollPane
我有一个工作的Java 向JDialog添加JScrollPane,java,swing,jscrollpane,jdialog,Java,Swing,Jscrollpane,Jdialog,我有一个工作的JDialog,现在我想添加滚动条。文档对我来说有点混乱。我是将对话框添加到JScrollPane还是将对话框添加到JScrollPane中 似乎所有示例的对话框中都有一个JPanel,面板是可滚动的。我有一个动态增长的对话框,所以我希望对话框本身是可滚动的。有人能给我指出正确的方向吗 回复安德鲁·汤普森 谢谢你的回复 此时,我让布局管理器决定大小。我还不确定它到底有多大,所以我还没有设定任何尺寸。它只是随着我添加行而增长。这将是这个发展阶段的一部分。宽度不会改变,只是高度会改变。
JDialog
,现在我想添加滚动条。文档对我来说有点混乱。我是将对话框添加到JScrollPane
还是将对话框添加到JScrollPane
中
似乎所有示例的对话框中都有一个JPanel
,面板是可滚动的。我有一个动态增长的对话框,所以我希望对话框本身是可滚动的。有人能给我指出正确的方向吗
回复安德鲁·汤普森
谢谢你的回复
此时,我让布局管理器决定大小。我还不确定它到底有多大,所以我还没有设定任何尺寸。它只是随着我添加行而增长。这将是这个发展阶段的一部分。宽度不会改变,只是高度会改变。我使用“invokelater”显示对话框。以下是相关代码:
timeLineDialog = new JDialog();
timeLineDialog.setLayout(layout);
timeLineDialog.setModalityType(ModalityType.MODELESS);
timeLineDialog.setTitle("Time Line Settings");
timeLineDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
.
.
.
timeLineDialog.pack();
timeLineDialog.setLocationRelativeTo(GUI.getInstance().getFrame());
timeLineDialog.setVisible(true);
我希望滚动条位于对话框窗格的右侧。我认为您必须创建一个JDialog,然后向其中添加一个JScrollPane以及其中的内容。以下代码适用于我:
import javax.swing.JDialog;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import javax.swing.JLabel;
public class Dialog extends JDialog {
private final JScrollPane scrollPane = new JScrollPane();
//I added the breaks to the label below to be able to scroll down.
private final JLabel lblContent = new JLabel("<html><body><p>Content<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>Content<br><br><br><br><br><br>Content</p></body></html>");
public static void main(String[] args) {
Dialog dialog = new Dialog();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
}
public Dialog() {
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new BorderLayout(0, 0));
getContentPane().add(scrollPane, BorderLayout.CENTER);
scrollPane.setViewportView(lblContent);
}
}
import javax.swing.JDialog;
导入javax.swing.JScrollPane;
导入java.awt.BorderLayout;
导入javax.swing.JLabel;
公共类对话框扩展JDialog{
私有最终JScrollPane scrollPane=新JScrollPane();
//我在下面的标签中添加了分隔符,以便能够向下滚动。
私人最终JLabel lblContent=新JLabel(内容
内容
<;
公共静态void main(字符串[]args){
Dialog=新建Dialog();
setDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE);
对话框.setVisible(true);
}
公共对话框(){
立根(100100450300);
getContentPane().setLayout(新的BorderLayout(0,0));
getContentPane().add(滚动窗格,BorderLayout.CENTER);
scrollPane.setViewportView(lblContent);
}
}
希望这能有所帮助。我认为您必须创建一个JDialog,然后在其中添加一个JScrollPane和您的内容。以下代码适用于我:
import javax.swing.JDialog;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import javax.swing.JLabel;
public class Dialog extends JDialog {
private final JScrollPane scrollPane = new JScrollPane();
//I added the breaks to the label below to be able to scroll down.
private final JLabel lblContent = new JLabel("<html><body><p>Content<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>Content<br><br><br><br><br><br>Content</p></body></html>");
public static void main(String[] args) {
Dialog dialog = new Dialog();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
}
public Dialog() {
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new BorderLayout(0, 0));
getContentPane().add(scrollPane, BorderLayout.CENTER);
scrollPane.setViewportView(lblContent);
}
}
import javax.swing.JDialog;
导入javax.swing.JScrollPane;
导入java.awt.BorderLayout;
导入javax.swing.JLabel;
公共类对话框扩展JDialog{
私有最终JScrollPane scrollPane=新JScrollPane();
//我在下面的标签中添加了分隔符,以便能够向下滚动。
私人最终JLabel lblContent=新JLabel(内容
内容
<;
公共静态void main(字符串[]args){
Dialog=新建Dialog();
setDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE);
对话框.setVisible(true);
}
公共对话框(){
立根(100100450300);
getContentPane().setLayout(新的BorderLayout(0,0));
getContentPane().add(滚动窗格,BorderLayout.CENTER);
scrollPane.setViewportView(lblContent);
}
}
希望这能有所帮助。“我是将JDialog添加到JScrollPane中,还是将JDialog添加到JScrollPane中?”。而是将对话框的主面板(需要滚动的内容)添加到滚动窗格中,然后将滚动窗格添加到对话框中。“我有一个动态增长的对话框,所以我希望对话框本身可以滚动。”我不明白你的意思。以最小尺寸、更宽和更高的宽度提供ASCII艺术或GUI预期布局的简单绘图,以显示如何使用额外空间/滚动条应出现的位置。我强烈建议您花时间查看
JTable
谢谢。你说得对。不幸的是,这个东西是进化而不是设计的。我可能会决定在某个时候做一个完整的重写,但我需要得到我现在正在工作的东西。在试用JTable之后,我发现它不适合我的应用程序。有太多的事情我不能用它来做。例如,我不能跨列(没有扩展代码),即使我实现了这一点,如果有两行,我也会有一个非滚动的标题。“我是将JDialog添加到JScrollPane中,还是将JDialog添加到JScrollPane中?”。而是将对话框的主面板(需要滚动的内容)添加到滚动窗格中,然后将滚动窗格添加到对话框中。“我有一个动态增长的对话框,所以我希望对话框本身可以滚动。”我不明白你的意思。以最小尺寸、更宽和更高的宽度提供ASCII艺术或GUI预期布局的简单绘图,以显示如何使用额外空间/滚动条应出现的位置。我强烈建议您花时间查看JTable
谢谢。你说得对。不幸的是,这个东西是进化而不是设计的。我可能会决定在某个时候做一个完整的重写,但我需要得到我现在正在工作的东西。在试用JTable之后,我发现它不适合我的应用程序。有太多的事情我不能用它来做。例如,我不能跨列(没有扩展代码),即使我实现了这一点,如果需要两行,我也有一个非滚动的标题。啊,这对我来说是有意义的。现在的JDialog应该更改为JScrollPane,然后添加到JDialog中。谢谢。嗯,再想一想,我需要JDialog吗?滚动窗格本身不起作用吗?我想我已经弄明白了。您的示例之所以有效,是因为添加了1个组件。我发现您只能向JScollPane添加一个组件,因此需要将JDialog作为其单个组件添加到滚动窗格中。我需要在这方面做一些工作,所以我还没有尝试过。添加一个JPanel并向其中添加内容怎么样?我认为如果面板比滚动窗格大,滚动就可以了。我有一个JDIalog已经在工作了。将其转换为JPanel是一个大问题吗