Может кто-нибудь объяснить мне, что я делаю неправильно?
blockquote>panel.setLayout(null);
Не использовать нулевую разметку.
Полосы прокрутки появляются автоматически, только когда предпочтительный размер компонента, добавляемого в область прокрутки, больше, чем размер полосы прокрутки.
Задачей менеджера по расположению является определение предпочтительного размера панели. Поскольку вы не используете менеджер макетов, предпочтительный размер не рассчитывается.
Таким образом, решение заключается в использовании Layout Manager . Возможно вертикальный
BoxLayout
.
C # поддерживает две формы строковых литералов: обычные строковые литералы и дословные строковые литералы .
Обычный строковый литерал состоит из нуля или более символов, заключенных в двойные кавычки, как в «hello», и может включать обе простые escape-последовательности (такие как \ t для символа табуляции), а также шестнадцатеричные и escape-последовательности Unicode.
Строковый литерал состоит из символа @, за которым следует символ двойной кавычки, ноль или более символов и закрывающая двойная кавычка персонаж. Простой пример - @ "привет". В дословном строковом литерале символы между разделителями интерпретируются дословно, единственное исключение составляет кавычка-escape-последовательность. В частности, простые escape-последовательности и шестнадцатеричные и Unicode escape-последовательности не обрабатываются в дословных строковых литералах. Строковый литерал может содержать несколько строк.
Пример 1:
@"C:\Path\File.zip" == "C:\\Path\\File.zip"
// where
"C:\\Path\\File.zip" // regular string literal
@"C:\Path\File.zip" // verbatim string literal
Примечание : в строковых литералах дословно следует избегать двойных кавычек.
Пример 2:
@"He said: ""Hello""" == "He said: \"Hello\""
Подробнее здесь :
Префикс «@» позволяет использовать ключевые слова в качестве идентификаторов, что полезно при взаимодействии с другими языками программирования. Символ @ на самом деле не является частью идентификатора, поэтому идентификатор может рассматриваться на других языках как обычный идентификатор без префикса. Идентификатор с префиксом @ называется дословным идентификатором. Использование префикса @ для идентификаторов, которые не являются ключевыми словами, разрешено, но настоятельно не рекомендуется из-за стиля.
Пример:
class @class
{
public static void @static(bool @bool) {
if (@bool)
System.Console.WriteLine("true");
else
System.Console.WriteLine("false");
}
}
class Class1
{
static void M() {
cl\u0061ss.st\u0061tic(true);
}
}
Символ @
имеет несколько значений в C #:
Когда используется в начале строки, это означает «воспринимать эту строку буквально; не интерпретировать символы, которые в противном случае использовались бы как escape-символы». Это называется дословным строковым литералом . Например, @ "\ n \ t"
равно "\\ n \\ t"
.
При использовании в начале идентификатора, it означает «интерпретировать это как идентификатор, а не как ключевое слово». Например, int @this
позволит вам назвать целочисленную переменную «this», которая обычно будет недопустимой, поскольку this
является ключевым словом.
Символ @ в основном говорит: «Возьми эту строку в точности так, как она есть». Это позволяет разработчику избежать побега.
Итак, @ "C: \" == "C: \\" (с \ escaped).
Я считаю это наиболее полезным в RegEx ... RegEx может стать очень неприятным и запутанным быстро, когда вы начинаете избегая разных вещей и т. д., так что просто использовать буквальное значение.
знак @ перед строкой позволяет буквально интерпретировать строку, в противном случае вам придется экранировать обратную косую черту с помощью другой ("C: \").
Это дословный строковый литерал , поэтому вы можете использовать обратную косую черту без интерпретации в качестве escape-символа.
Строковый литерал состоит из символ
@
, за которым следует символ двойной кавычки, ноль или более символы и закрывающая двойная кавычка персонаж. Простой пример@ "привет"
. В дословной строке буквально, символы между разделители интерпретируются дословно, единственное исключение, являющееся цитата-спусковое последовательность . В частности, простые escape-последовательности и шестнадцатеричный и Unicode escape последовательности не обрабатываются в дословные строковые литералы. Дословно строковый литерал может охватывать несколько lines.
quote-escape-sequence: ""
Таким образом, единственный выход из буквального строкового литерала - это экранирование ""
как "
в течение двух" с.
@ указывает, что строка является литеральной строкой, и поэтому вам не нужно экранировать символы внутри нее. Как сказано в документации для строки :
Преимущество дословных строк заключается в том, что escape-последовательности не обрабатываются, что позволяет легко написать, например, полное имя файла: @ "c: \ Docs \ Source \ a.txt "вместо
" c: \\ Docs \\ Source \\ a.txt "
Помещение @ перед строкой превращает ее из обычной литеральной строки в дословную буквальную строку, которая не использует прямую косую черту для escape (), но использует две кавычки в строке для экранирования кавычки.