gpt4 book ai didi

java - 添加 ScrollPane 使我的 JTextArea 消失

转载 作者:行者123 更新时间:2023-12-01 14:43:13 39 4
gpt4 key购买 nike

如果我有滚动条,JTextArea 就会消失。没有它,一切都很好。有人可以向我解释一下吗?以及如何修复它!

另外,顺便说一句,是否可以更改滚动 Pane 的颜色或设置边框?

相关代码如下:

        //Text Container
JPanel textCon = new JPanel();
textCon.setOpaque(false);
textCon.setLayout(new GridLayout(1,3));
add(textCon);

//Left Filler
JPanel left = new JPanel();
left.setOpaque(false);
textCon.add(left);

//Text area
mainText = new JTextArea("SAMPLE");
mainText.setOpaque(true);
mainText.setSize(50,30);
mainText.setLineWrap(true);
mainText.setWrapStyleWord(true);
textCon.add(mainText);

//Set textAre fonts, colors, border/padding
mainText.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.GREEN), BorderFactory.createEmptyBorder(10, 10, 10, 10)));
mainText.setFont(new Font("sansserif", Font.BOLD, 10));
mainText.setForeground(Color.GREEN);
mainText.setBackground(Color.BLACK);

//Scroll Bar
scroller = new JScrollPane(mainText);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
mainText.add(scroller);

这是剩下的部分,以防万一!

import java.awt.*;
import java.awt.event.*;
import java.awt.Toolkit.*;
import javax.swing.*;
import java.io.*;
import javax.swing.border.*;
import java.util.*;

class ProjectMain extends JFrame
{
//Declare String/Array for mainText
String output = "";
String [] hero;
int page = 0;
JTextArea mainText;
JScrollPane scroller;

public ProjectMain()
{
//Set Background
setTitle("JLA Viewer");
setSize(1920,1080);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setContentPane(new JLabel(new ImageIcon("bg.png")));
setLayout(new GridLayout(3,1));

//Refresh Background
setSize(1919,1079);
setSize(1920,1080);

//Label Container
JPanel labelCon = new JPanel();
labelCon.setOpaque(false);
labelCon.setLayout(new BorderLayout());
add(labelCon);

//Top Label
JLabel topLabel = new JLabel("JLA Profile Viewer");
topLabel.setHorizontalAlignment(SwingConstants.CENTER);
topLabel.setForeground(Color.GREEN);
topLabel.setOpaque(false);
topLabel.setFont(new Font("sansserif", Font.BOLD, 30));
labelCon.add(BorderLayout.NORTH,topLabel);

//Logo
ImageIcon logo = new ImageIcon("logo.jpg");
JLabel logoLabel = new JLabel();
logoLabel.setHorizontalAlignment(SwingConstants.CENTER);
logoLabel.setIcon(logo);
labelCon.add(BorderLayout.SOUTH,logoLabel);

//Text Container
JPanel textCon = new JPanel();
textCon.setOpaque(false);
textCon.setLayout(new GridLayout(1,3));
add(textCon);

//Left Filler
JPanel left = new JPanel();
left.setOpaque(false);
textCon.add(left);

//Text area
mainText = new JTextArea("SAMPLE");
mainText.setOpaque(true);
mainText.setSize(50,30);
mainText.setLineWrap(true);
mainText.setWrapStyleWord(true);
textCon.add(mainText);

//Set textAre fonts, colors, border/padding
mainText.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.GREEN), BorderFactory.createEmptyBorder(10, 10, 10, 10)));
mainText.setFont(new Font("sansserif", Font.BOLD, 10));
mainText.setForeground(Color.GREEN);
mainText.setBackground(Color.BLACK);

//Scroll Bar
scroller = new JScrollPane(mainText);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
mainText.add(scroller);

//Right Filler
JPanel right = new JPanel();
right.setOpaque(false);
textCon.add(right);

//Button Container
JPanel buttonContainer = new JPanel();
buttonContainer.setOpaque(false);
add(BorderLayout.SOUTH,buttonContainer);

//PREV Button
JButton prev = new JButton("PREV");
prev.setOpaque(false);
ActionListener PrevList = new PrevButton(); //Call Button Listener
prev.addActionListener(PrevList);
buttonContainer.add(prev);

//EXIT Button
JButton exit = new JButton("EXIT");
exit.setOpaque(false);
ActionListener ExitList = new ExitButton(); //Call Button Listener
exit.addActionListener(ExitList);
buttonContainer.add(exit);

//NEXT Button
JButton next = new JButton("NEXT");
next.setOpaque(false);
ActionListener NextList = new NextButton(); //Call Button Listener
next.addActionListener(NextList);
buttonContainer.add(next);

//File Handling
try
{
File inputFile = new File ("ProjectInputFile.txt");
Scanner scanner = new Scanner(inputFile);

while(scanner.hasNextLine())
{
output = output + (scanner.nextLine() + "\n");
}
}
catch(IOException ioe)
{

}

//Add split strings to array
hero = output.split("@");
}

//Prev button event listener
public class PrevButton implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
page = page - 1;
if(page < 0)
{
page = hero.length;
}
mainText.setText(hero[page]);
}
}

//Exit button event listener
public class ExitButton implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
setVisible(false);
dispose();
System.exit(0);
}
}

//Next button event listener
public class NextButton implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
page++;
if(page > (hero.length))
{
page = 0;
}
mainText.setText(hero[page]);
}
}

public static void main(String args[])
{
new ProjectMain();
}

}

最佳答案

这一行

mainText.add(scroller);

尝试将 JScrollPane 添加到 JTextArea。您已经设置了 JScrollPaneViewPortView,因此不需要此行。

您仍然需要添加 JSrolllPane:

textCon.add(scroller);

还要确保在添加所有组件后调用 JFrame#setVisible

setVisible(true);

is it possible to change the color or set a border on the scrollpane?

当然。不要在 JTextArea mainText 上设置边框,而是在 JScrollPane 上设置边框。

旁注:

  • 不要在不显示异常内容的情况下默默捕获IOException
  • JFrames 通常直接使用而不是扩展

关于java - 添加 ScrollPane 使我的 JTextArea 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15728016/

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