gpt4 book ai didi

java - JScrollPane 不想滚动

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:38 25 4
gpt4 key购买 nike

我对 Java 很陌生,这是我的第一个项目,所以这可能看起来是一个愚蠢的问题。

我已经尝试过此论坛和其他论坛上的其他解决方案,但对我没有帮助。

我正在构建一个具有多个 JTextField 的系统,但我无法让 JScrollPane 向下滚动以查看其他文本字段。

我已在下面插入我的代码:

    private void initialize() {

frmBudsAndTastebuds = new JFrame();
frmBudsAndTastebuds.setResizable(true);
frmBudsAndTastebuds.setTitle("Buds and Tastebuds");
frmBudsAndTastebuds.getContentPane().setName("Buds and Tastebuds");
frmBudsAndTastebuds.getContentPane().setBackground(Color.PINK);
frmBudsAndTastebuds.setBounds(100, 100, 1378, 706);
frmBudsAndTastebuds.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmBudsAndTastebuds.setLocation(0, 0);
frmBudsAndTastebuds.getContentPane().setLayout(null);

JLabel lblBudsAndTastebuds = new JLabel("Buds and Tastebuds Invoice System");
lblBudsAndTastebuds.setFont(new Font("Tw Cen MT Condensed Extra Bold", Font.PLAIN, 22));
lblBudsAndTastebuds.setBounds(335, 11, 309, 25);
frmBudsAndTastebuds.getContentPane().add(lblBudsAndTastebuds);

JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.setBorder(null);
tabbedPane.setVerifyInputWhenFocusTarget(false);
tabbedPane.setBounds(0, 47, 1362, 627);
frmBudsAndTastebuds.getContentPane().add(tabbedPane);

JPanel panel = new JPanel();
panel.setBorder(new LineBorder(new Color(0, 0, 0)));
panel.setBackground(Color.PINK);
tabbedPane.addTab("Invoice", null, panel, "Invoice");
tabbedPane.setBackgroundAt(0, Color.WHITE);
tabbedPane.setForegroundAt(0, Color.BLACK);
panel.setLayout(null);

JPanel panel_2 = new JPanel();
panel_2.setLayout(null);
panel_2.setVisible(false);

JScrollPane scrollPane = new JScrollPane(panel_2);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBounds(10, 256, 990, 332);
scrollPane.setViewportView(panel_2);
panel.add(scrollPane);

最佳答案

查看上面的代码,您似乎创建了一个 JFrame 并向其中添加了多个选项卡,第一个选项卡是“Invoice”。我假设您希望“发票”选项卡具有多个需要可滚动的 JTextField 和 JLabels。我强烈建议您不要使用“panel”和“panel2”等名称。这根本就不是好的编码。 future 的开发人员将花费很长时间将事物映射到其他事物并识别上下文。

JPanel panel = new JPanel(); 
panel.setBorder(new LineBorder(new Color(0, 0, 0)));`
panel.setBackground(Color.PINK);

我假设这是您要添加 JTextFields 和 JLabels 的 JPanel。您需要了解的第一件事是,要使 JScrolledPane 工作,您需要将所有标签和文本字段添加到面板中,并将该面板添加到 JScrolledPane 中,并将该 Pane 添加到 JTabbedPane 中,以便它可以滚动。所以这样做:

JFrame mainFrame = new JFrame();
//Create all your other stuff for your frame.

//Create your JTabbedPane
JTabbedPane tabPane = new JTabbedPane();

//Create your invoice Panel
JPanel invoicePanel = new JPanel();

//Create your JLabels and Jtextfields and add them to your invoicePanel
invoicePanel.add(/*your object here for labels*/);

//Create your JScrollPane
JScrollPane invoiceScroll = new JScrollPane(invoicePanel,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
//Adds the scrolling in vertical direction always and never in the horizontal direction.

//Add the scrollPane to the tab.
tabPane.addTab("Invoice", null, invoiceScroll, "Invoice");


//Add the tabPane to your main frame.
mainFrame.getContentPane().add(tabPane);

上面的代码会将您的选项卡添加到具有滚动功能的框架中。如果您想向选项卡内的某些部分添加额外的滚动,请创建一个 JScrollPane 并将滚动区域内需要的所有项目添加到该 Pane 中,然后将该 Pane 添加到面板中。另请记住,有时滚动可能无法在空布局上运行,因此我建议为您创建的每个面板创建一个布局。希望这可以帮助。如果您有任何后续问题,请回复此答案。

关于java - JScrollPane 不想滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49628820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com