Я пишу программу, которая принимает некоторые уравнения от пользователя. Я хочу, чтобы каждая константа вводилась в JTextField
, причем каждая из них разделялась JTextArea
(говоря + x0, + x1 и т. Д.). Однако я не могу заставить форматирование работать, и я не уверен, почему. Вот соответствующий код:JTextArea Getting Cut Off in Swing
JTextField[][] dataTextFields = new JTextField[a+1][b+1];
JTextArea[][] dataLabels = new JTextArea[a][b+1];
for (int i = 0; i < a+1; i++)
{
for (int j = 0; j < b+1; j++)
{
dataTextFields[i][j] = new JTextField(10);
dataTextFields[i][j].setLocation(5+70*i, 10+30*j);
dataTextFields[i][j].setSize(40,35);
dataEntryPanel.add(dataTextFields[i][j]);
if (i < a)
{
String build = "x" + Integer.toString(i) + "+";
dataLabels[i][j] = new JTextArea(build);
dataLabels[i][j].setBackground(dataEntryPanel.getBackground());
dataLabels[i][j].setBounds(45+70*i,20+30*j,29,30);
dataEntryPanel.add(dataLabels[i][j]);
}
}
}
Это создает JTextFields
с JTextAreas
0f "+ хи" между ними. Тем не менее, когда я запускаю апплет, это выглядит следующим образом:
я могу нажать на этикетках и вывести их на передний план, по-видимому, в результате чего в этом:
Я бы хотел, чтобы ярлыки были видны без каких-либо усилий от пользователя, очевидно. У JTextArea есть атрибут, который можно изменить, чтобы перенести это на передний план? Я бы предпочел не добавлять больше элементов интерфейса (панели, контейнеры и т. Д.). Благодаря!
Я подозреваю, что происходит то, что вы в основном писали свой собственный менеджер компоновки, указав точные границы для каждого компонента. Я сомневаюсь, что код рисования/рендеринга/макета Swing относится к этому, так как он пытается делегировать это любому менеджеру компоновки, уже присутствующему на компоненте. Вы пытались использовать что-то вроде GridLayout или GridBagLayout, чтобы понять, решает ли ваша проблема? Или, может быть, серия FlowLayouts внутри GridBag, чтобы каждый поток отображался непосредственно под предыдущим, предоставляя вам строки таких компонентов, как у вас на скриншоте. –
какой макет вы используете? пожалуйста, добавьте соответствующий код для JLabel тоже – Sage
@Sage, я оговорился. Я фактически закончил использование JTextArea вместо JLabel; Я не мог заставить JLabels вообще появиться. – aquemini