Java 为什么切换选项卡时JTextArea会消失?

Java 为什么切换选项卡时JTextArea会消失?,java,swing,user-interface,jtextarea,jtabbedpane,Java,Swing,User Interface,Jtextarea,Jtabbedpane,为什么切换选项卡时JTextArea会消失?我正在运行Ubuntu linux,如果这有什么不同的话 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.TextAre

为什么切换选项卡时JTextArea会消失?我正在运行Ubuntu linux,如果这有什么不同的话

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

public class LogView extends JPanel {

    private JLabel titleLabel;
    private TextArea orderViewArea;

    public LogView() {

        setLayout(new BorderLayout());
        JPanel mainPanel = new JPanel();

        titleLabel = new JLabel("Logging Information");
        // titleLabel.setPreferredSize(new Dimension(600,50));

        mainPanel.setLayout(new GridBagLayout());
        GridBagConstraints constraints = new GridBagConstraints();

        String[] tempstuff = { "Active", "ALL", "Stuff" };
        JComboBox stageList = new JComboBox(tempstuff);
        stageList.setSelectedIndex(0);

        JComboBox otherList = new JComboBox(tempstuff);
        otherList.setSelectedIndex(0);

        JLabel dateStart = new JLabel("Date Start:   ");
        JLabel dateEnd = new JLabel("Date End:   ");

        JTextField dateStartField = new JTextField(9);
        JTextField dateEndField = new JTextField(9);

        JPanel datePanel = new JPanel(new FlowLayout());
        datePanel.add(dateStart);
        datePanel.add(dateStartField);
        datePanel.add(dateEnd);
        datePanel.add(dateEndField);

        List s = new ArrayList();
        s.add("test1");
        s.add("test2");
        JList orderJList = new JList();
        orderJList.setListData(s.toArray());
        orderJList
                .setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        orderViewArea = new TextArea();
        orderViewArea.setEditable(false);
        orderViewArea.setText("Log stuff:\n Pizza\n Rochester\n stuff");

        constraints.insets = new Insets(10, 10, 10, 10);
        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(titleLabel, constraints);

        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 1;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(stageList, constraints);

        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 2;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(datePanel, constraints);


        /*
        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 3;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(otherList, constraints);
*/
        constraints.weighty = 1;
        constraints.gridx = 0;
        constraints.gridy = 3;
        constraints.fill = GridBagConstraints.BOTH;
        mainPanel.add(orderJList, constraints);

        //otherList.setVisible(false);
        JScrollPane scroll = new JScrollPane(orderViewArea);
        constraints.gridx = 1;
        constraints.gridy = 2;
        constraints.gridheight = 2;
        constraints.ipady = 5;
        constraints.weighty = 1;
        constraints.weightx = 1;
        constraints.fill = GridBagConstraints.BOTH;
        mainPanel.add(scroll, constraints);

        add(mainPanel);
    }

    public static void main(String args[]){
        JFrame test = new JFrame("TEST");
        JTabbedPane tabs = new JTabbedPane();
        tabs.addTab("test", new LogView());
        tabs.addTab("Test3", new JPanel());
        test.add(tabs);
        test.pack();
        test.setVisible(true);
    }

}

不要将Swing与AWT组件混合使用。“从EDT开始”仍然需要修复,但请尝试此代码并报告

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.*;

public class LogView extends JPanel {

    private JLabel titleLabel;
    private JTextArea orderViewArea;

    public LogView() {

        setLayout(new BorderLayout());
        JPanel mainPanel = new JPanel();

        titleLabel = new JLabel("Logging Information");
        // titleLabel.setPreferredSize(new Dimension(600,50));

        mainPanel.setLayout(new GridBagLayout());
        GridBagConstraints constraints = new GridBagConstraints();

        String[] tempstuff = { "Active", "ALL", "Stuff" };
        JComboBox stageList = new JComboBox(tempstuff);
        stageList.setSelectedIndex(0);

        JComboBox otherList = new JComboBox(tempstuff);
        otherList.setSelectedIndex(0);

        JLabel dateStart = new JLabel("Date Start:   ");
        JLabel dateEnd = new JLabel("Date End:   ");

        JTextField dateStartField = new JTextField(9);
        JTextField dateEndField = new JTextField(9);

        JPanel datePanel = new JPanel(new FlowLayout());
        datePanel.add(dateStart);
        datePanel.add(dateStartField);
        datePanel.add(dateEnd);
        datePanel.add(dateEndField);

        List<String> s = new ArrayList<String>();
        s.add("test1");
        s.add("test2");
        JList orderJList = new JList();
        orderJList.setListData(s.toArray());
        orderJList
                .setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        orderViewArea = new JTextArea();
        orderViewArea.setEditable(false);
        orderViewArea.setText("Log stuff:\n Pizza\n Rochester\n stuff");

        constraints.insets = new Insets(10, 10, 10, 10);
        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(titleLabel, constraints);

        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 1;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(stageList, constraints);

        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 2;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(datePanel, constraints);


        /*
        constraints.weighty = 0;
        constraints.gridx = 0;
        constraints.gridy = 3;
        constraints.fill = GridBagConstraints.HORIZONTAL;
        mainPanel.add(otherList, constraints);
*/
        constraints.weighty = 1;
        constraints.gridx = 0;
        constraints.gridy = 3;
        constraints.fill = GridBagConstraints.BOTH;
        mainPanel.add(orderJList, constraints);

        //otherList.setVisible(false);
        JScrollPane scroll = new JScrollPane(orderViewArea);
        constraints.gridx = 1;
        constraints.gridy = 2;
        constraints.gridheight = 2;
        constraints.ipady = 5;
        constraints.weighty = 1;
        constraints.weightx = 1;
        constraints.fill = GridBagConstraints.BOTH;
        mainPanel.add(scroll, constraints);

        add(mainPanel);
    }

    public static void main(String args[]){
        JFrame test = new JFrame("TEST");
        test.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        JTabbedPane tabs = new JTabbedPane();
        tabs.addTab("test", new LogView());
        tabs.addTab("Test3", new JPanel());
        test.add(tabs);
        test.pack();
        test.setVisible(true);
    }

}
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.*;
公共类LogView扩展了JPanel{
私人JLabel titleLabel;
私有JTextArea orderViewArea;
公共日志视图(){
setLayout(新的BorderLayout());
JPanel mainPanel=新的JPanel();
titleLabel=新的JLabel(“日志信息”);
//titleLabel.setPreferredSize(新尺寸(600,50));
setLayout(新的GridBagLayout());
GridBagConstraints=新的GridBagConstraints();
字符串[]tempstuff={“活动”、“全部”、“填充”};
JComboBox stageList=新的JComboBox(tempstuff);
阶段列表。设置选定的索引(0);
JComboBox otherList=新的JComboBox(tempstuff);
otherList.setSelectedIndex(0);
JLabel dateStart=新JLabel(“日期开始:”);
JLabel dateEnd=新的JLabel(“日期结束:”);
JTextField dateStartField=新的JTextField(9);
JTextField dateEndField=新的JTextField(9);
JPanel datePanel=newjpanel(newflowlayout());
datePanel.add(dateStart);
datePanel.add(dateStartField);
datePanel.add(dateEnd);
datePanel.add(dateEndField);
列表s=新的ArrayList();
s、 添加(“测试1”);
s、 添加(“测试2”);
JList orderJList=新JList();
setListData(s.toArray());
订货人
.setSelectionMode(ListSelectionModel.单间隔选择);
orderViewArea=新的JTextArea();
orderViewArea.setEditable(false);
setText(“日志内容:\n Pizza\n Rochester\n stuff”);
constraints.insets=新的insets(10,10,10,10);
约束。权重=0;
constraints.gridx=0;
constraints.gridy=0;
constraints.fill=gridbagsconstraints.HORIZONTAL;
添加(标题标签、约束);
约束。权重=0;
constraints.gridx=0;
constraints.gridy=1;
constraints.fill=gridbagsconstraints.HORIZONTAL;
添加(阶段列表、约束);
约束。权重=0;
constraints.gridx=0;
constraints.gridy=2;
constraints.fill=gridbagsconstraints.HORIZONTAL;
添加(日期面板、约束);
/*
约束。权重=0;
constraints.gridx=0;
constraints.gridy=3;
constraints.fill=gridbagsconstraints.HORIZONTAL;
添加(其他列表、约束);
*/
约束。权重=1;
constraints.gridx=0;
constraints.gridy=3;
constraints.fill=gridbagsconstraints.BOTH;
添加(订单列表、约束);
//otherList.setVisible(false);
JScrollPane scroll=新的JScrollPane(orderViewArea);
constraints.gridx=1;
constraints.gridy=2;
约束条件。网格高度=2;
constraints.ipady=5;
约束。权重=1;
约束条件:权重x=1;
constraints.fill=gridbagsconstraints.BOTH;
主面板。添加(滚动、约束);
添加(主面板);
}
公共静态void main(字符串参数[]){
JFrame测试=新JFrame(“测试”);
test.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JTabbedPane tabs=新的JTabbedPane();
tabs.addTab(“test”,newlogview());
tabs.addTab(“Test3”,新的JPanel());
测试。添加(选项卡);
test.pack();
test.setVisible(真);
}
}

Swing GUI对象应仅在Windows上构建和操作。OTOH代码混合了Swing和AWT组件,因此,如果我要抛硬币并开始制作WAGs.@trashgood,我将对SSCCE做的第一件事是完全删除AWT导入,看看会有什么中断。如果包中只有一个或两个,我将只添加这些。我想我经常看到这个问题去手术室。很高兴你把它整理好了。好问题,顺便说一句-很乐意帮忙。:-)