标签: jscrollpane

JPanel 左侧的 JTextArea

我有一个主要的 gui 类和一个 gui 日志类。gui 日志类扩展了 JPanel 并简单地添加了一个 JTextField,它将用于打印日志语句。我将 JTextfield(在滚动窗格中)添加到面板中

add(scrollPane, BorderLayout.WEST);
Run Code Online (Sandbox Code Playgroud)

然后将此类添加到我的主 gui 类中,该类扩展了 JFrame 并使用了 BorderLayout。面板首先添加到 JSplitPane(使用垂直拆分),然后使用添加 SplitPane

getContentPane().add(splitPane);
Run Code Online (Sandbox Code Playgroud)

我的问题是我希望日志面板中的 JTextfield 位于屏幕的最左侧,但是无论我使用什么 BorderLayout 设置(CENTER、EAST、SOUTH...),它始终保持在中心。

有谁知道我该如何解决这个问题?

您还知道如何在调整拆分窗格的大小时调整 JTExt 区域的大小吗?

谢谢

图片: 在此处输入图片说明

左边是我得到的,右边是我想要的。

java swing jscrollpane jtextarea border-layout

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

JScrollPane adjustListener 和 scrollRectToVisible

JScrollPane当用户滚动它时,我需要处理事件。在这里建议使用addAdjustmentListenertoJViewport或 Vertical/Horizo​​ntalScrollBar。

有什么区别,我应该选择哪种方法?

我也想用scrollRectToVisible同样的方法JScrollPane,我应该期待AdjustmentListener使用这种方法吗?

另外我想知道是否scrollRectToVisible尝试进行最小滚动以使所需的矩形可见,还是尝试使其在JViewport?

UPD:要求:

1) 有一个 JScrollPane,其中一个 JPanel 有许多 JLabel(ImageIcon),因此其中一些不可见。

2)当网络事件发生时,我需要向用户显示 JLabel 之一(使其可见)。如果 I 最初不可见,则 JScrollPane 应自动滚动。这就是为什么我提到scrollRectToVisible.

3) 在里面有 ImageIcon 的 JLabel 上方,我需要显示一条消息来解释这个元素发生了什么。由于 JLayeredPane 层次结构更高,该消息当前被实现为另一个带有浮点数的 JLabel。现在的问题是,如果用户滚动 JScrollPane,浮动 JLabel 应该相应地移动到相应 JLabel(ImageIcon) 的顶部。

UDP2:SSCCE

我还没有实现浮动 JLabel,但我已经不喜欢索引为 11 的标签的反应,scrollRectToVisible因为它被裁剪了一半。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList; …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane jscrollbar jviewport

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

JTable 在 Java 中自动滚动到底部

每当我添加新列并显示最后 10 行时,我都希望 JTable 自动滚动到底部。但是,我可以选择滚动到我想要的任何地方(鼠标监听器?)。你知道怎么做吗?这是我到目前为止的代码。它构建一个 JTable 并为每次在 JButton 上单击鼠标添加一个新行。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class sampleGUI extends JFrame implements ActionListener {
    private JButton incrementButton;
    private JTable table;
    private DefaultTableModel model;
    private int count;
    private JScrollPane scroll;


    public sampleGUI() {
        JFrame frame = new JFrame("sample frame");
        frame.setLayout(new BorderLayout());

        incrementButton = new JButton("Increase the count!");

        model = new DefaultTableModel();
        model.addColumn("column 1");
        table = new JTable(model);
        frame.add(incrementButton, BorderLayout.NORTH);
        scroll = new …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jtable jscrollpane

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

我需要在添加新组件时动态调整 JPanel 的大小

我需要让用户向我的 JFrame 添加更多文本字段,因此一旦框架的大小超过其原始值,滚动窗格就会介入。由于我无法将 JScrollPane 添加到 JFrame 以启用滚动,因此我决定将 JPanel 放在JFrame 并将 JPanel 对象传递给 JScrollPane 构造函数。滚动现在可以正常工作,但只能直到它到达 JPanel 的边界。问题是 JPanel 的大小保持原样,不会动态拉伸。发生的情况是我的代码中的按钮用完了 300x300 大小的 JPanel 的所有空间,但我想要做的是在这些控件用完其原始空间后让 JPanel 拉伸。请指教。

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;


public class Skrol {
    public static void main(String[] args) {


        JFrame f = new JFrame();
        f.setLayout(new FlowLayout());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel p = new JPanel();


        p.setPreferredSize(new Dimension(400,400));



        JScrollPane jsp = new JScrollPane(p);

        jsp.setPreferredSize(new Dimension(300,300));
        jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

            for(int i=0;i<100;i++) …
Run Code Online (Sandbox Code Playgroud)

java user-interface jpanel jscrollpane

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

在 ScrollPane 中添加多个 jlabel

我有一个滚动窗格,我想在其中添加多个 jlabel。在 jTextField1 中,用户输入 1-10 之间的 no(这里的 no. 表示必须添加多少 jlabel),相应地 jlabel 将添加到滚动窗格中。

谁能告诉我我该怎么做。

int x=jTextField1.getText;
    JPanel mainpanel = new JPanel();
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS));
    this.add(mainpanel);

    JPanel rightpanel = new JPanel();
    rightpanel.setLayout(new FlowLayout());
    for (int i = 0; i < x; i++)
    {
        rightpanel.add(new JLabel("Label " + i));
    }
    mainpanel.add(new JLabel("Left label"));
    mainpanel.add(new JScrollPane(rightpanel));
Run Code Online (Sandbox Code Playgroud)

此代码不起作用。虽然当我们在另一个 jFrame 中做同样的事情时它正在工作,即

JFrame frame = new JFrame("Labels");

    JPanel mainpanel = new JPanel();
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS));
    frame.add(mainpanel);

    JPanel rightpanel = new JPanel();
    rightpanel.setLayout(new FlowLayout());
    for (int i = …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel jscrollpane

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

以最大化方式启动 JEditorPane

我有这个代码:

package web.test;

import java.awt.Dimension;
import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

public class WebTest {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    JEditorPane Window = new JEditorPane();
    Window.setEditable(false);   

    try {
        Window.setPage("http://www.sparky.org/safety_tips.html");
    } catch (IOException e) {
        Window.setContentType("text/html");
        Window.setText("<html>Cannot Load Page/html>");
    } 

    JScrollPane ScrollPane = new JScrollPane(Window);     
    JFrame Frame = new JFrame("Fire Safety Tips");
    Frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    Frame.getContentPane().add(ScrollPane);
    Frame.setPreferredSize(new Dimension());
    Frame.setVisible(true);
    Frame.setLocationRelativeTo(null);
}
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以让这个窗口最大化吗?我尝试将滚动和编辑窗格的大小设置为 setPreferredSize as .getMaximumSize 但这不起作用。

java swing jeditorpane jframe jscrollpane

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

在哪里插入JScrollPane?

我使用GridBagLayout制作了一个布局,强制子组件从底部向上堆叠.

我唯一剩下的就是让"容器"组件可以滚动.

我尝试在不同的位置插入JScrollPane,但我找不到工作点.

我的2个内部JPanels在底部正确对齐,当我调整窗口大小时它们正确调整大小.但是当我调整窗口的大小以使文本不适合时,我希望"容器"组件滚动.

请帮助新手:)

更新1:滚动应该是整个GridBagLayout.不适用于每个单独的textpane.

更新2:更改代码以使用BorderLayout,因为它对我的滚动问题没有任何影响.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;

public class BorderTest extends JFrame {

private static final long serialVersionUID = 1L;

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new BorderTest().setVisible(true);
        }
    });
}

public BorderTest() {

    UIManager.put("swing.boldMetal", Boolean.FALSE);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setTitle("Grid Bag");
    setSize(500, 300);
    setLocationRelativeTo(null);

    JPanel container = new JPanel();
    container.setLayout(new BorderLayout()); …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane

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

如何使嵌套的 JScrollPanes 正常工作?

在此输入图像描述

如图所示,我有两个 JScrollPanes,A 和 B。我想要实现的是,当光标位于 B 上时,滚动鼠标滚轮:

1)如果B有可滚动内容,则滚动B即可。

2)如果B已经滚动到最后,或者B内容很少,无法滚动,则滚动A。

现在发生的情况是,无论如何,鼠标滚轮事件总是被 B 消耗,因此 A 永远无法滚动。有什么建议吗?提前致谢。

java swing jscrollpane

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

理解jQuery(基本问题)

我有一个非常基本的jquery问题.我试图将jscrollpane添加到我的网站,并在ajax调用后进行初始化.但是,当我运行该功能时,我一直在控制台中收到"testFunction未定义"的消息.代码非常基本:

$(document).ready(function() {
  var api = $('.scroll-pane').jScrollPane({
      showArrows:true,
      maintainPosition: false
    }).data('jsp');

  function testFunction() {
      api.getContentPane().load('ajax_content.html', function() {
      api.reinitialise();
   });
 }          
});
Run Code Online (Sandbox Code Playgroud)

为什么我一直收到消息?如果我从测试功能中取出测试功能,我会提前感谢错误"api not defined"

ajax jquery jscrollpane

0
推荐指数
1
解决办法
353
查看次数

JScrollPane没有显示滚动条

我有一个带有自定义LayoutManager的JPanel并尝试将其放入JScrollPane中,但是,滚动窗格似乎不知道它应该启用滚动.无论我如何设置组件的首选大小(这就是JScrollPane所说的javadoc所说的),它绝对没有区别.这是代码:

    canvas = new JPanel();
    JScrollPane scroll = new JScrollPane();
    scroll.setViewportView(canvas);
    scroll.setPreferredSize(new Dimension(924,700));
    canvas.setPreferredSize(new Dimension(2000,2000));
Run Code Online (Sandbox Code Playgroud)

滚动条不会出现.JScrollPane的容器设置为遵循其首选大小.我已经通过调试器检查了画布的首选大小确实是2000 x 2000(LayoutManager确保这一点),那么可能会发生什么呢?

java swing jpanel jscrollpane layout-manager

0
推荐指数
1
解决办法
4639
查看次数