У меня есть JTextField для отображения пути выбранной папки. Он намеренно отключен (так как папка должна быть выбрана с помощью JFileChooser), и когда программа запускается, путь папки по умолчанию устанавливается в виде текста с использованием setText (). < /P>
trainOutputFolderField = new JTextField(20);
trainOutputFolderField.setEnabled(false);
trainOutputFolderField.setText(getSourcePath()+"training-output/");
trainGBPanel.add(trainOutputFolderField, b);
< /code>
Я хотел бы, чтобы он автоматически прокручивал правый край текста, когда он длиннее поля, в то время как оставшиеся налево. Это то, что происходит по умолчанию, если вы вручную вводите в текстовое поле, но он держит его на якоре слева, если вы используете SetText (). < /P>
включен в запись текста JTextfield VS отключен JTextField SetText < /p>
Я бы хотел, чтобы пользователь мог видеть конец пути в поле отключенного текста. Использование SethorizontalAlignment () с правым или следами, похоже, ничего не делает, хотя, вероятно, это не было решением для начала, так как я хочу, чтобы текст оставался влево, когда он короче, чем поле. Стимись с позицией карета, казалось, тоже ничего не делал. < /P>
Есть идеи? Мне все еще нужно по умолчанию, мне все еще нужно отобразить путь папки, поэтому я все еще ищу ответ.import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame {
public JTabbedPane tabbedPane;
public JPanel trainPanel;
public JPanel trainGBPanel;
// There are more components, but I've removed them for demonstration
public JTextField trainOutputFolderField;
public JButton trainOutputFolderButton;
public MainFrame() {
setTitle("Yeehaw");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.CENTER));
tabbedPane = new JTabbedPane();
trainPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
trainGBPanel = new JPanel(new GridBagLayout());
GridBagConstraints b = new GridBagConstraints();
b.anchor = b.WEST;
b.gridy = 0;
b.gridx = 0;
b.insets = new Insets(5,5,5,5);
trainGBPanel.add(new JLabel("Output folder"), b);
b.gridx += 1;
b.gridwidth = 2;
trainOutputFolderField = new JTextField(20);
trainOutputFolderField.setEnabled(false);
trainOutputFolderField.setText("yeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeehaw");
trainGBPanel.add(trainOutputFolderField, b);
b.gridx += b.gridwidth;
b.gridwidth = 1;
trainOutputFolderButton = new JButton("Select");
trainOutputFolderButton.addActionListener(new FileChooserListener(this, trainOutputFolderField));
trainGBPanel.add(trainOutputFolderButton, b);
trainPanel.add(trainGBPanel);
tabbedPane.add("TRAIN", trainPanel);
this.add(tabbedPane);
this.setVisible(true);
}
public class FileChooserListener implements ActionListener {
public MainFrame mainFrame;
public JTextField textField;
public FileChooserListener(MainFrame mainFrame, JTextField textField) {
this.mainFrame = mainFrame;
this.textField = textField;
}
@Override
public void actionPerformed(ActionEvent e) {
// There's JFileChooser stuff in here, but I've removed it for simplicity
trainOutputFolderField.setText(params.trainOutputFolder);
}
}
}
< /code>
Кроме того, я в Windows 10, и LookandFeel - это "com.sun.java.swing.plaf.windows.windowslookandfeel", если это что -то означает. в нем.
Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-settext