gpt4 book ai didi

java - 我的 JTextArea 不尊重组件的大小,正在被切断

转载 作者:行者123 更新时间:2023-12-04 10:34:39 25 4
gpt4 key购买 nike

我已经为此工作了几个小时。老实说,我无法弄清楚。我在 JSplitPane 中有 JTextArea,它位于带有 JButton 的 JPanel 内,所有这些都放在我的 JFrame 中。我正在使用布局管理器。我试过使用 pack()。我曾尝试使用首选尺寸。如果没有 JPanel,我的按钮不会显示在正确的位置或其他选项卡中的开关按钮。使用 JPanel,它会切断我所有的文本,停止滚动功能(是的,我曾尝试将 TextAreas 设置为始终具有水平和垂直滚动条...并没有解决文本无缘无故停止换行的问题)。

public static void main(String[] args) throws IOException
{
JFrame frame = new JFrame();

Deck blackjack = new Deck(Deck.TYPE[0]);

JTextArea textBlackjackUnshuffled = new JTextArea();
JTextArea textBlackjackShuffle = new JTextArea();

JButton shuffleButtonBlackjack = new JButton(new ImageIcon(ImageIO.read(new File("res/shuffle.png"))));

JToolBar toolBarBlackjack = new JToolBar("Blackjack");

JSplitPane splitPaneBlackjack = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

JPanel panel = new JPanel();

JTabbedPane tabbedPaneBlackJack = new JTabbedPane();
JTabbedPane tabbedPaneCanasta = new JTabbedPane();
JTabbedPane tabbedPanePinochle = new JTabbedPane();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());


textBlackjackUnshuffled.setColumns(10);
textBlackjackUnshuffled.setLineWrap(true);
textBlackjackUnshuffled.setWrapStyleWord(true);
textBlackjackUnshuffled.setEditable(false);
textBlackjackUnshuffled.setFont(new Font("DejaVu Sans", Font.PLAIN, 100));
textBlackjackUnshuffled.append(blackjack.toString());

textBlackjackShuffle.setColumns(10);
textBlackjackShuffle.setLineWrap(true);
textBlackjackShuffle.setWrapStyleWord(true);
textBlackjackShuffle.setEditable(false);
textBlackjackShuffle.setFont(new Font("DejaVu Sans", Font.PLAIN, 100));
textBlackjackShuffle.append(blackjack.toString());

shuffleButtonBlackjack.setBorderPainted(false);
shuffleButtonBlackjack.setFocusPainted(false);
shuffleButtonBlackjack.setContentAreaFilled(false);

splitPaneBlackjack.add(new JScrollPane(textBlackjackUnshuffled));
splitPaneBlackjack.add(new JScrollPane(textBlackjackShuffle));

panel.add(splitPaneBlackjack, BorderLayout.CENTER);
panel.add(shuffleButtonBlackjack, BorderLayout.PAGE_END);

tabbedPaneBlackJack.addTab("Blackjack", panel);

frame.add(tabbedPaneBlackJack);
frame.setSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));
frame.setVisible(true);
}

最佳答案

您正在将 JScrollPanes 添加到 BorderLayout 位置的面板,但尚未将面板的布局管理器设置为 BorderLayout。在这种情况下,面板将使用 JPanel 的默认布局管理器 FlowLayout,该管理器不够智能,无法尊重滚动 Pane 的首选大小。

您的代码需要:

panel.setLayout(new BorderLayout());

关于java - 我的 JTextArea 不尊重组件的大小,正在被切断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60240257/

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