Это можно сделать, однако есть несколько вещей, на которые следует обратить внимание:
Не загружать видео с YouTube. Вместо этого рассмотрите возможность использования статического видеофайла (например, https://www.w3schools.com/html/mov_bbb.mp4 , как показано ниже). Это даст вам больший контроль над автоматическим воспроизведением видео (что важно, поскольку по умолчанию элементы управления воспроизведением недоступны)
Вам нужно будет сделать несколько ревизий. к вашему CSS - ключевые изменения, о которых нужно знать, будут следующие правила для вашего элемента video
:
z-index:-1; /* Causes the video to sit behind your heading */
object-position:center; /* Causes video to be centred against the header */
object-fit:cover; /* Causes video to cover/stretch to the header */
muted
к элементу видео, чтобы гарантировать, что автозапуск не заблокирован браузером
Вот рабочий фрагмент, чтобы продемонстрировать эти идеи в действии :
* {
box-sizing: border-box;
}
body {
background-color: black;
margin: 5px;
}
header {
position: fixed;
font-family: Arial;
color: white;
width: 98%;
margin: 10px;
border: 1px solid white;
background-color: black;
/* Add this */
text-align: center;
overflow: hidden;
}
header h1 {
border: 1px solid black;
background-color: black;
padding: 2px;
font-size: 5.5em;
font-weight: bold;
letter-spacing: 11px;
text-align: center;
/* Add this */
display: inline-block;
}
/* Update this */
video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
min-width: 100%;
min-height: 100%;
z-index: -1;
object-position: center;
object-fit: cover;
}
EMINƎM
как насчет:
text.substring(0,text.lastIndexOf('\n'));
(...)
FileReader r= new FileReader(filePath);
StringBuilder b=new StringBuilder();
int n=0;
char array[]=new char[1024];
while((n=r.read(array))!=-1) b.append(array,0,n);
r.close();
String content=b.toString();
textArea.setText(content.substring(0,content.lengt()-1);
(...)
Другая идея:
boolean firstLine = true;
while ((displayText = br.readLine()) != null) {
if (firstLine) {
firstLine = false;
} else {
textArea.append("\n");
}
textArea.append(displayText);
}
Идея состоит в том, чтобы добавить разрыв строки перед новой строкой для отображения, за исключением первой строки файла.
Как насчет
if (textArea.length > 0) textArea.Text = textArea.Text.Substring(0 ,textArea.Text.Length - 1)
Самый легкий путь не состоит в том, чтобы использовать BufferedReader.readLine()
. Например:
BufferedReader in = new BufferedReader(new FileReader(filePath));
char[] buf = new char[4096];
for (int count = in.read(buf); count != -1; count = in.read(buf)) {
textArea.append(new String(buf, 0, count));
}
Править
Я должен был видеть это прежде, но намного лучший путь состоит в том, чтобы позволить JTextArea считать файл:
BufferedReader in = new BufferedReader(new FileReader(filePath));
textArea.read(in, null);
Это будет все еще читать в новой строке в конце, но это нормализует все окончания строки в Вашем тексте (см. javadocs для DefaultEditorKit
для объяснения того, как окончания строки обрабатываются). Таким образом, можно избавиться от запаздывающей новой строки с чем-то вроде этого:
// line endings are normalized, will always be "\n" regardless of platform
if (textArea.getText().endsWith("\n")) {
Document doc = ta.getDocument();
doc.remove(doc.getLength() - 1, 1);
}
По-видимому, Вы хотите новую строку между двумя строками, не после каждой строки. Это означает, что у Вас должно быть по крайней мере две строки:
if (d = br.readLine()) != null ) {
textArea.append(displayText);
while (d = br.readLine()) != null ) {
textArea.append( "\n" + displayText);
}
}
Конечно, это выглядит более сложным. Поэтому 'между' более сложно, чем 'после'.
В Вашем цикле:
while ((displayText = br.readLine()) != null) {
if (textArea.length() > 0)
textArea.append("\n");
textArea.append(displayText);
}
т.е. если уже существует некоторый текст в Вашей текстовой области, вставьте новую строку.