Размер JPanel внутренними компонентами

Вы должны изменить несколько вещей в вашем файле thing.js. Требуется всего несколько строк кода вместо импорта Router из экспресса и добавления дополнительных маршрутов.

Просто скопируйте приведенный ниже код и вставьте его в соответствующие файлы.

thing.js

const get = (req, res) => {
    console.log(req.body);
}

module.exports = get;

index.js

const express = require ('express');
const get = require('./api/things');
const bodyParser = require("body-parser");
const app = express();

app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({extended: false}));
app.get('/', function (req, res){
    res.render('pages/index');
});


app.post('/creatething', (req,res)=>{
    get(req,res);
});
app.listen(4000, () => {
    console.log('App is running on port: 4000');
});
module.exports= app;

Надеюсь, это поможет вам решить проблему.

19
задан Jakub Arnold 11 May 2009 в 21:38
поделиться

5 ответов

Посмотрев исходный код для pack () , я пришел до:

    panel.setPreferredSize(panel.getPreferredSize());

Это заставляет панель пересчитывать свой предпочтительный размер на основе предпочтительных размеров ее подкомпонентов.

Вам может потребоваться или не потребоваться вызвать validate () впоследствии; в моем крошечном примере это, казалось, не имело значения, но в Javadoc говорится:

Метод validate используется для того, чтобы заставить контейнер снова размещать свои подкомпоненты. Он должен вызываться, когда этот контейнер '

19
ответ дан 30 November 2019 в 04:29
поделиться

По умолчанию Контейнеры имеют предпочтительный размер, который соответствует предпочтительному размеру макета, заданному контейнером. Так что буквально все, что вам нужно сделать, это:

panel.setSize(panel.getPreferredSize());

Предположительно вы делаете что-то странное с родителем, чтобы остановить его »

3
ответ дан 30 November 2019 в 04:29
поделиться

возможно вы сможете сделать что-то подобное, удалив со своей панели

setResizable (false);

1
ответ дан 30 November 2019 в 04:29
поделиться

Я бы попробовал:

panel.revalidate();
panel.repaint();

Это не обязательно приведет к установке панели на ее предпочтительный размер, который больше зависит от того, что менеджер по расположению решит использовать.

Это полезно в случаях где вы добавили / удалили компоненты из панели, которая в настоящее время отображается и отображается.

Обновление: По вашему скриншоту могу сказать следующее: 1) Рассмотрите возможность программного изменения расположения разделителя. 2) Рассмотрите возможность программного изменения размера самого окна по горизонтали, так как кажется, что оно немного тесновато, чтобы показать обе стороны разделенной панели. Или оба. Вы можете установить расположение разделителя, выполнив

splitPane.setDividerLocation(newSize);

. Имейте в виду, что для этого есть два перегруженных метода: один принимает значение с плавающей запятой, а другой - целое число. Float определяет процент от размера, а int - размер в пикселях. Размер указан для левой панели (или верхней панели для этой ориентации). Я бы рассмотрел возможность изменения положения разделителя в зависимости от предпочтительной ширины панелей.

1
ответ дан 30 November 2019 в 04:29
поделиться

JSplitPanes немного привередлив, когда дело касается размеров своих дочерних элементов, посмотрите учебное пособие по Java . Правильно ли вы используете GridBagLayout? Похоже, он неправильно устанавливает минимальный размер JPanel.

0
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: