java - 将 JLabel 添加到 JTabbedPane 中的 JTextArea?

标签 java swing jbutton jlabel jtabbedpane

我的代码和屏幕截图如下。我正在尝试在 JTextField 上方获取标签。但是,当标签显示时,选项卡上的按钮就会消失。我的问题是如何获得文本区域上方的标签,但同时显示按钮?

带有标签的代码:

import java.awt.BorderLayout;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class TestApplication implements ActionListener {

  public static void main(String[] args) {
    final JFrame frame = new JFrame();
    frame.setSize(3000, 3000);
    frame.setTitle("RBA Test Application");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);


    JLabel logLabel = new JLabel("Input / Output Log");


    JTextArea logbox = new JTextArea() {
    @Override
       public java.awt.Dimension getPreferredSize() {
          return new Dimension(500, 500);
       };
    };

    logLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    logLabel.setText("Input / Output Log");

    logbox.add(logLabel);



    JButton initialize = new JButton("Initialize");

    JButton connect = new JButton("Connect");

    JButton disconnect = new JButton("Disconnect");

    JButton shutdown = new JButton("Shut Down");

    JButton portsettings = new JButton("Port Settings");

    JButton online = new JButton("Go Online");

    JButton offline = new JButton("Go Offline");

    JButton status = new JButton("Status");

    JButton reboot = new JButton("Reboot");

    JButton account = new JButton("Account");

    JButton amount = new JButton("Amount");

    JButton reset = new JButton("Reset");

    JButton approvordecl = new JButton("Approve / Decline");

    JButton test = new JButton("Test Button #1");

    JButton testing = new JButton("Test Button #2");

    JRadioButton button = new JRadioButton("Radio Button");

    JRadioButton button2 = new JRadioButton("Radio Button");

    JCheckBox checkbox = new JCheckBox("Check Box");

    JCheckBox checkbox2 = new JCheckBox("Check Box");



    JPanel newButtonPanel = new JPanel() {
        @Override
           public java.awt.Dimension getPreferredSize() {
              return new Dimension(1000, 50);
           };
        };

    newButtonPanel.add(online);
    newButtonPanel.add(offline);
    newButtonPanel.add(status);
    newButtonPanel.add(reboot);
    newButtonPanel.add(account);
    newButtonPanel.add(amount);
    newButtonPanel.add(reset);
    newButtonPanel.add(approvordecl);


    JPanel testPanel = new JPanel();
    testPanel.add(button);
    testPanel.add(button2);
    testPanel.add(checkbox2);

    JPanel posPanel = new JPanel();
    posPanel.add(test);
    posPanel.add(testing);
    posPanel.add(checkbox);

    JPanel llpPanel = new JPanel();
    llpPanel.setLayout(new BorderLayout());
    llpPanel.add(newButtonPanel);
    llpPanel.add(new JScrollPane(logbox), BorderLayout.PAGE_END);
    llpPanel.add(logLabel);

    JPanel buttonPanel = new JPanel();
    buttonPanel.add(initialize);
    buttonPanel.add(connect);
    buttonPanel.add(disconnect);
    buttonPanel.add(shutdown);
    buttonPanel.add(portsettings);
    frame.add(buttonPanel);
    frame.add(buttonPanel, BorderLayout.NORTH);

    JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.addTab("LLP", null, llpPanel, "Low Level Protocol");
    tabbedPane.addTab("POS",null, posPanel, "Point Of Sale");
    tabbedPane.addTab("Test", null, testPanel, "Test");

    JPanel tabsPanel = new JPanel(new BorderLayout());
    tabsPanel.add(tabbedPane);
    frame.add(tabsPanel, BorderLayout.CENTER);


    frame.pack();



}

@Override
public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub

}






}

带有标签的屏幕截图:

label

没有标签的代码:

import java.awt.BorderLayout;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class TestApplication implements ActionListener {

        public static void main(String[] args) {
    final JFrame frame = new JFrame();
    frame.setSize(3000, 3000);
    frame.setTitle("RBA Test Application");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);


    JLabel logLabel = new JLabel("Input / Output Log");

    JTextArea logbox = new JTextArea() {
    @Override
       public java.awt.Dimension getPreferredSize() {
          return new Dimension(500, 500);
       };
    };

    logLabel.setFont(new java.awt.Font("Tahoma", 3, 18)); // NOI18N
    logLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    logLabel.setText("Input / Output Log");

    logbox.add(logLabel);


    JButton initialize = new JButton("Initialize");

    JButton connect = new JButton("Connect");

    JButton disconnect = new JButton("Disconnect");

    JButton shutdown = new JButton("Shut Down");


    JButton portsettings = new JButton("Port Settings");

    JButton online = new JButton("Go Online");

    JButton offline = new JButton("Go Offline");

    JButton status = new JButton("Status");

    JButton reboot = new JButton("Reboot");


    JButton account = new JButton("Account");

    JButton amount = new JButton("Amount");

    JButton reset = new JButton("Reset");


    JButton approvordecl = new JButton("Approve / Decline");

    JButton test = new JButton("Test Button #1");

    JButton testing = new JButton("Test Button #2");

    JRadioButton button = new JRadioButton("Radio Button");

    JRadioButton button2 = new JRadioButton("Radio Button");

    JCheckBox checkbox = new JCheckBox("Check Box");

    JCheckBox checkbox2 = new JCheckBox("Check Box");



    JPanel newButtonPanel = new JPanel() {
        @Override
           public java.awt.Dimension getPreferredSize() {
              return new Dimension(1000, 50);
           };
        };

    newButtonPanel.add(online);
    newButtonPanel.add(offline);
    newButtonPanel.add(status);
    newButtonPanel.add(reboot);
    newButtonPanel.add(account);
    newButtonPanel.add(amount);
    newButtonPanel.add(reset);
    newButtonPanel.add(approvordecl);


    JPanel testPanel = new JPanel();
    testPanel.add(button);
    testPanel.add(button2);
    testPanel.add(checkbox2);

    JPanel posPanel = new JPanel();
    posPanel.add(test);
    posPanel.add(testing);
    posPanel.add(checkbox);

    JPanel llpPanel = new JPanel();
    llpPanel.setLayout(new BorderLayout());
    llpPanel.add(newButtonPanel);
    llpPanel.add(new JScrollPane(logbox), BorderLayout.PAGE_END);

    JPanel buttonPanel = new JPanel();
    buttonPanel.add(initialize);
    buttonPanel.add(connect);
    buttonPanel.add(disconnect);
    buttonPanel.add(shutdown);
    buttonPanel.add(portsettings);
    frame.add(buttonPanel);
    frame.add(buttonPanel, BorderLayout.NORTH);

    JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.addTab("LLP", null, llpPanel, "Low Level Protocol");
    tabbedPane.addTab("POS",null, posPanel, "Point Of Sale");
    tabbedPane.addTab("Test", null, testPanel, "Test");

    JPanel tabsPanel = new JPanel(new BorderLayout());
    tabsPanel.add(tabbedPane);
    frame.add(tabsPanel, BorderLayout.CENTER);


    frame.pack();



}

@Override
public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub

}






}

没有标签的屏幕截图:

label

最佳答案

将所有组件添加到 llpPanel 中,并按照您期望看到的顺序从上到下:

llpPanel.add(newButtonPanel, BorderLayout.PAGE_START);
llpPanel.add(logLabel, BorderLayout.CENTER);
llpPanel.add(new JScrollPane(logbox), BorderLayout.PAGE_END);

关于java - 将 JLabel 添加到 JTabbedPane 中的 JTextArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927606/

相关文章:

javascript - java POST 415(不支持的媒体类型)

java - 在 Spring 中处理可选输入 RESTful API 的最佳方式

java - Swing java : display jbutton and image separately on the screen

java - 使用带有 GridBagConstraints 的 GridBagLayout 进行 Swing

java - JButtons 在鼠标悬停之前不显示

java - 获取 Log4j2 日志文件位置以写入包含日期的目录

java - 使用Java从html中提取 anchor 标记

java - 如何获取基于JScrollPane的窗口可见部分的尺寸

java - CardLayout,在 JFrame 或 JPanel 中?

java - JButton 在 JFrame 中响应,但不在 JPanel 中响应