我已经为此工作了几个小时。老实说我无法弄清楚。我的 JTextArea 位于 JSplitPane 内,该 JSplitPane 位于带有 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/