我在框架上显示原始内容。但是如果我创建了一个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);
}
这不是全班,只是其中的一部分,因此括号不会出错。
答案 0 :(得分:0)
使用任何挥杆组件的位置设置窗口大小:
例如。 compVariable.setBounds(x,y,width,height);