https://pastein.ru/t/T-
скопируйте уникальную ссылку для отправки
public class Boxes implements Serializable {
private String nameBox;
private Box box;
private JCheckBox checkBox;
private JTextField fieldRes, fieldLast, fieldLeft ;
private ArrayList<Tabs> listTabs = Interface.listTabs;
public Boxes(String nameBox){
super();
this.fieldRes = new JTextField(10);
this.fieldLast = new JTextField(10);
this.fieldLeft = new JTextField(10);
this.nameBox=nameBox;
this.box = Box.createHorizontalBox();
//задаем оформление границ и заголовка для box
TitledBorder title=new TitledBorder(BorderFactory.createLineBorder(Color.black, 1, true),nameBox,1,0);
title.setTitleFont(Design.FONT_NAME_BOX);
title.setTitleColor(Color.BLUE);
//задаем созданное выше оформление границ box
box.setBorder(title);
box.setName(nameBox);
JLabel resource = new JLabel("Пробег по ресурсу: ");
JLabel lastRefresh = new JLabel(" Пробег последней замены: ");
JLabel left = new JLabel(" Осталось до замены: ");
checkBox = new JCheckBox();
fieldLeft.setEditable(false); //активирует\деактивирует поле
resource.setFont(Design.FONT_LABEL_BOX);
lastRefresh.setFont(Design.FONT_LABEL_BOX);
left.setFont(Design.FONT_LABEL_BOX);
box.setSize(800, 20);
fieldRes.addKeyListener(new FieldResourceKeyListener());
fieldLast.addKeyListener(new FieldLastLeftKeyListener());
box.add(resource);
box.add(fieldRes);
box.add(lastRefresh);
box.add(fieldLast);
box.add(left);
box.add(fieldLeft);
box.add(checkBox);
}
public Box getBox(){
return box;
}
public String getNameBox(){
return nameBox;
}
public String getTextFieldRes(){
return fieldRes.getText();
}
public String getTextFieldLast(){
return fieldLast.getText();
}
public String getTextFieldLeft(){
return fieldLeft.getText();
}
public boolean getIsSelectedCheckBox(){
boolean isSelected = checkBox.isSelected();
return isSelected;
}
public int getValueFieldResource(){
String line = fieldRes.getText();
if (line.isEmpty()){return 0;}
else return Integer.parseInt(line);
}
public int getValueFieldLastReplace(){
String line = fieldLast.getText();
if (line.isEmpty()){return 0;}
else return Integer.parseInt(line);
}
public void setValueFieldLeft(int value){ // устанавливает значение поля "Осталось до замены", меняет цвет: желтый - менее 30% от ресурса пробега, красный - менее 10%
double resource = this.getValueFieldResource();
if (resource*0.3>value&&resource*0.1<=value){fieldLeft.setBackground(Color.yellow);}
else if (resource*0.1>value){fieldLeft.setBackground(Color.red);}
else {fieldLeft.setBackground(null);}
String text = Integer.toString(value);
fieldLeft.setText(text);
}
public class FieldResourceKeyListener extends KeyAdapter implements Serializable{
public void keyReleased(KeyEvent event){
if (event.getKeyCode() != KeyEvent.VK_BACK_SPACE){ //если нажимается кнопка Backspace код снизу не выполняется
String line = fieldRes.getText();
try {
JPanel publicPanel = (JPanel) box.getParent().getParent(); //получаем общую панель данной вкладки(box на panelBoxes а та на publicPanel)
for (Tabs tab:listTabs){
if ((publicPanel.getName()).equals(tab.getPublicPanel().getName())){
int dist = tab.getCurrentDistance();
for(Boxes box:tab.getListBoxes()){ //реализует изменение последнего поля всех боксов
int value = box.getValueFieldLastReplace()+box.getValueFieldResource()-dist;
box.setValueFieldLeft(value);
}
break;}
}
}
catch (NumberFormatException exc){
JOptionPane.showMessageDialog(null, "Введите в поле \"Пробег по ресурсу\" число! Либо число больше 2147483647");
}
}
}
}
public class FieldLastLeftKeyListener extends KeyAdapter implements Serializable{
public void keyReleased(KeyEvent event){
if (event.getKeyCode() != KeyEvent.VK_BACK_SPACE){ //если нажимается кнопка Backspace код снизу не выполняется
String line = fieldLast.getText();
int lastReplace = Integer.parseInt(line);
try{
JPanel publicPanel = (JPanel) box.getParent().getParent(); //получаем общую панель данной вкладки(box на panelBoxes а та на publicPanel)
for (Tabs tab:listTabs){
if ((publicPanel.getName()).equals(tab.getPublicPanel().getName())){
int dist = tab.getCurrentDistance();
if (lastReplace>dist){
dist=lastReplace;
tab.setCurrenField(dist);}
for(Boxes box:tab.getListBoxes()){ //реализует изменение последнего поля всех боксов
int value = box.getValueFieldLastReplace()+box.getValueFieldResource()-dist;
box.setValueFieldLeft(value);
}
break;}
}
}
catch (NumberFormatException exc){
JOptionPane.showMessageDialog(null, "Введите в поле \"Пробег последней замены\" число! Либо число больше 2147483647");
}
}
}
}
}