Вы должны изменить несколько вещей в вашем файле 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;
Надеюсь, это поможет вам решить проблему.
Посмотрев исходный код для pack ()
, я пришел до:
panel.setPreferredSize(panel.getPreferredSize());
Это заставляет панель пересчитывать свой предпочтительный размер на основе предпочтительных размеров ее подкомпонентов.
Вам может потребоваться или не потребоваться вызвать validate ()
впоследствии; в моем крошечном примере это, казалось, не имело значения, но в Javadoc говорится:
Метод
validate
используется для того, чтобы заставить контейнер снова размещать свои подкомпоненты. Он должен вызываться, когда этот контейнер '
По умолчанию Контейнеры
имеют предпочтительный размер, который соответствует предпочтительному размеру макета, заданному контейнером. Так что буквально все, что вам нужно сделать, это:
panel.setSize(panel.getPreferredSize());
Предположительно вы делаете что-то странное с родителем, чтобы остановить его »
возможно вы сможете сделать что-то подобное, удалив со своей панели
setResizable (false);
Я бы попробовал:
panel.revalidate();
panel.repaint();
Это не обязательно приведет к установке панели на ее предпочтительный размер, который больше зависит от того, что менеджер по расположению решит использовать.
Это полезно в случаях где вы добавили / удалили компоненты из панели, которая в настоящее время отображается и отображается.
Обновление: По вашему скриншоту могу сказать следующее: 1) Рассмотрите возможность программного изменения расположения разделителя. 2) Рассмотрите возможность программного изменения размера самого окна по горизонтали, так как кажется, что оно немного тесновато, чтобы показать обе стороны разделенной панели. Или оба. Вы можете установить расположение разделителя, выполнив
splitPane.setDividerLocation(newSize);
. Имейте в виду, что для этого есть два перегруженных метода: один принимает значение с плавающей запятой, а другой - целое число. Float определяет процент от размера, а int - размер в пикселях. Размер указан для левой панели (или верхней панели для этой ориентации). Я бы рассмотрел возможность изменения положения разделителя в зависимости от предпочтительной ширины панелей.
JSplitPanes немного привередлив, когда дело касается размеров своих дочерних элементов, посмотрите учебное пособие по Java . Правильно ли вы используете GridBagLayout? Похоже, он неправильно устанавливает минимальный размер JPanel.