事物在窗格上以不同方式显示

时间:2015-07-22 07:54:15

标签: java swing

我在框架上显示原始内容。但是如果我创建了一个JPanel并将内容添加到其中,那么使用frame.add(pane, BorderLayout.CENTER);将面板添加到框架中,但它的显示方式不同而且没有正确放置。

例如,通常原始的一切都正确显示。在窗格中,JTextPane无法正确显示文本,开头被切断,并且不会占用整个窗口。

当我向JTextBox添加mainPane时,它不占用窗口的整个宽度,而是在我专门放置BorderLayout.SOUTH时放在中间线,文本框看起来像这个[],你不能输入它。

以下是开始代码:

public class ConsoleApp {

public static  JFrame frame;
public static  JTextPane consoleOutput;
public static JTextField consoleInput;
public JScrollPane scroll;

public static JTabbedPane tabs;

public static JPanel mainPane;
public static JPanel backupPane;

public static InputStream commandInput;

public static StyledDocument doc;

public static boolean trace = false;
public boolean debug = false;

public  Font consoleFont = new Font("Courier New", Font.PLAIN, 12);
//public  Color consoleColour = new Color(50, 50, 50);
public  Color consoleColour = new Color(255, 255, 255);

//public  Logger internalConsole;

public void start()
{

    try {

        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

    } catch(Exception e)
    {



    }

    initializeFrame();

}


public void initializeFrame()
{

    frame = new JFrame();
    frame.setTitle("sebagius7110's Minecraft Server Wrapper");
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);


    consoleOutput = new JTextPane();
    consoleOutput.setEditable(false);
    consoleOutput.setFont(consoleFont);
    consoleOutput.setBorder(null);
    consoleOutput.setOpaque(false);

    doc = consoleOutput.getStyledDocument();

    consoleInput = new JTextField();
    consoleInput.setFont(consoleFont);
    //consoleInput.setBorder(null);
    consoleInput.setOpaque(false);
    consoleInput.setEditable(true);
    Property.readProperties();
    consoleInput.setCaret(new ConsoleCaret());







    consoleInput.addActionListener(new ActionListener()
    {

        @Override
        public void actionPerformed(ActionEvent e)
        {

            String text = consoleInput.getText();

            if(text.length() >= 1)
            {
                if(text.startsWith("."))
                {

                    onCommand(text);

                } else {

                try{
                      InputStream is = new ByteArrayInputStream(consoleInput.getText().getBytes(Charset.forName("UTF-8")));


                     BufferedReader br = new BufferedReader(new InputStreamReader(is));

                     String input;

                     //input = br.readLine();

                     while(Util.ServerRunning && (input=br.readLine())!=null){
                        Stream.PutString(input);
                     }

                     br.close();

                  }catch(IOException io){
                     io.printStackTrace();
                  }
                }

                consoleInput.selectAll();

            }

        }

    });

    consoleInput.addKeyListener(new KeyListener()
    {

        @Override
        public void keyPressed(KeyEvent arg0) {}

        @Override
        public void keyReleased(KeyEvent arg0) {}

        @Override
        public void keyTyped(KeyEvent arg0) {}

    });

    scroll = new JScrollPane(consoleOutput);
    scroll.setBorder(null);
    scroll.setOpaque(false);
    scroll.getViewport().setOpaque(false);
    scroll.setBackground(GetPropValues.cbcolor);

    tabs = new JTabbedPane();
    mainPane = new JPanel();
    backupPane = new JPanel();

    //frame.setUndecorated(true);

    tabs.addTab("Main", mainPane);
    tabs.addTab("Backup", backupPane);

    mainPane.setBorder(null);
    mainPane.setOpaque(false);

    mainPane.add(scroll, BorderLayout.CENTER);
    mainPane.add(consoleInput, BorderLayout.SOUTH);

    frame.setContentPane(mainPane);

    //frame.add(scroll, BorderLayout.CENTER);
    //frame.add(consoleInput, BorderLayout.SOUTH);

    frame.setSize(660, 350);
    frame.setLocationRelativeTo(null);

    frame.setResizable(false);
    frame.setVisible(true);

}

这不是全班,只是其中的一部分,因此括号不会出错。

1 个答案:

答案 0 :(得分:0)

使用任何挥杆组件的位置设置窗口大小:

例如。 compVariable.setBounds(x,y,width,height);